Как объединить цифры в одно число?
- Войдите на сайт для отправки комментариев
Пнд, 14/12/2015 - 03:08
Здравствуйте!
Как объединить цифры в одно число?
К примеру a=20 b=15 то с должно иметь 2015 c=2015.

Kак слить цифры в одно числои записать их в переменного для использования .
В программе они выглядят так 7 цифр 7 сегментов 1,4,5,0,0,0.
textfield[0],textfield[1],textfield[2],textfield[3],textfield[4],textfield[5],textfield[6]
а надо как 145000.
/////////////////////////////////sketch брал тут////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
char textfield[7];
long Fstart_MHz;
void setup() {
Serial.begin(9600);
}
void loop() {
char lcd[7]= {textfield[0],textfield[1],textfield[2],textfield[3],textfield[4],textfield[5],textfield[6]};
int sig;
for (sig = 0; sig < 7; sig = sig + 1) {
delay(10);
Serial.println(lcd[sig]);
//tft.print(lcd[sig]); //выводит мелкие на дисплей цифры по очереди // https://www.adafruit.com/products/1651
Fstart_MHz=lcd[sig]-48; //задает частоту для генератора si5351
//si5351.set_freq(Fstart_MHz*100000000ULL, SI5351_PLL_FIXED, SI5351_CLK0); // https://learn.adafruit.com/adafruit-si5351-clock-generator-breakout/pinouts
}
}
a+b*10+c*100+d*1000+...
Bina, если не секрет - где вы учитесь?
Секрета нет. Учиться закончил 1990. Пишу так для себя как хобби когда есть настроение . Восновном на Flowcode , Siemens Logo . Там графические редакторы . С++ знаю не очень.
a+b*10+c*100+d*1000+...
Очень благодарен, попробую !!!!! Я думал есть функция а нее просту математика ;).
char a=1; char b=2; char c; void setup() { Serial.begin(9600); } void loop() { c=b+a*10; Serial.print(c,DEC); delay(500); }где то так
char a=1; char b=2; char c=3; char d=4; char e=5; char f=6; char g=7; double a1; double b2; double c3; double d4; double e5; double f6; void setup() { Serial.begin(9600); a1=b+a*10; b2=c+a1*10; c3=d+b2*10; d4=e+c3*10; e5=f+d4*10; f6=g+e5*10; Serial.print(f6); } void loop() { }может умнее предложил кто
Массивы и циклы.
Массивы не могу поменять они раздроблены на 7 a циклы можно.
Секрета нет. Учиться закончил 1990. Пишу так для себя как хобби когда есть настроение . Восновном на Flowcode , Siemens Logo . Там графические редакторы . С++ знаю не очень.
Заканчивается год. Вероятно в ВУЗах заканчивается семестр. За несколько недель я вижу вопрос, аналогичный вашему третий или четвертый раз.
Pад бы вернуть годы но время ушло. ;)
http://www.qrz.com/db/DL3LD/?mlab=
Что то типо этого пишу.
https://www.youtube.com/watch?v=tDRM7mG8XG8
Тут есть пару моих переделок под Si5351.
https://groups.yahoo.com/neo/groups/k6bez_projects/info
В исходном массиве char хранятся коды символов или числовые значения? Если коды, то они отличаются от числовых значений на 48. Естественно, умножать на степени десяти нужно не коды, а числовые значения.
Далее. переменная с объявлена как char, но по смыслу в ней собирается многозначеное число. Логично объявлять её как числовой целочисленный тип (byte, int или long). Конечно, язык С позволяет абстрагироваться от типа и работать с char как с byte, но зачем? В любом случае при таком объявлении в переменную с поместится не более чем двузначное число.
byte sig; long int rezultat = 0; for (sig = 0; sig < 7; sig++) { rezultat = 10 * rezultat + textfield[sig] - 48; } Serial.println(rezultat);Зачем нужен массив lcd[7] если уже есть textfield[7] ?
Я знаю спасибо . Все верно -48.
char a=1.......a=7 , 0=48........9=57
есть,
-------------------------------------
//if a numberpad button, append the relevant # to the textfield if (b>=3 ){ if (textfield_i < TEXT_LEN) { textfield[textfield_i] = buttonlabels[b][0]; textfield_i++; textfield[textfield_i] = 0; // zero terminate } }if (b == 0) { tft.setCursor(180,20); tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK); tft.setTextSize(1); long int rezultat = 0; for (textfield_i = 0; textfield_i < 7; textfield_i++) { rezultat = 10 * rezultat + textfield[textfield_i] - 48; } si5351.set_freq(rezultat*1000ULL, SI5351_PLL_FIXED, SI5351_CLK0); tft.print(rezultat); }// F1 frequency Start if (b == 0) { tft.setCursor(180,20); tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK); tft.setTextSize(1); int sig; long int F = 0; for (sig = 0; sig < textfield_i; sig++) { F = 10 * F + textfield[sig] - 48; } si5351.set_freq(F*100000ULL, SI5351_PLL_FIXED, SI5351_CLK0); tft.print(F); }