не работает цикл for

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

столкнулся с неработающим кодом

long numbers = 125012;
long ms[8];
 ms[0] = numbers/10000000;   
 ms[1] = numbers/1000000;    
 ms[2] = numbers/100000;     
 ms[3] = numbers/10000;     
 ms[4] = numbers/1000;      
 ms[5] = numbers/100;      
 ms[6] = numbers/10;       
 ms[7] = numbers/1;   

for (int i=0; i>=7; i++){
  Serial.println(ms[i]);
}

собственно в порт ничег оне идет

а вот если делаю так

 ms[0] = numbers/10000000;   Serial.println(ms[0]);
 ms[1] = numbers/1000000;    Serial.println(ms[1]);
 ms[2] = numbers/100000;     Serial.println(ms[2]);
 ms[3] = numbers/10000;     Serial.println(ms[3]);
 ms[4] = numbers/1000;      Serial.println(ms[4]);
 ms[5] = numbers/100;      Serial.println(ms[5]);
 ms[6] = numbers/10;       Serial.println(ms[6]);
 ms[7] = numbers/1;        Serial.println(ms[7]);

то работает

... также не работает вообще ничего в цикле for....

или в ардуино этогого цикла нет вообще?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Условие окончание цикла проверь

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

спасибо ) на ровном месте затупил )

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ELITE пишет:

не работает цикл for

Пользуйтесь while

ELITE пишет:

или в ардуино этогого цикла нет вообще?

Она-то знает, а вот Вы :(

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

чтобы отдельно не создавать тему, тут вопрос

почему

int celoe[8];

 celoe[0] = (x % 10) / 1;
 celoe[1] = (x % 100) / 10; 
 celoe[2] = (x % 1000) / 100;
 celoe[3] = (x % 10000) / 1000;
 celoe[4] = (x % 100000) / 10000;
 celoe[5] = (x % 1000000) / 100000;
 celoe[6] = (x % 10000000) / 1000000;
 celoe[7] = (x % 100000000) / 10000000; 

есть 1970 байт

int celoe[8];
for (int i=0; i<8; i++){
  celoe[i] = (x % 10*pow(10,i)) / 1*pow(10,i);
}

уже 3958 байт памяти!

тоесть цикл сильно прожорлив так?! целых 2кб дополнительно?!!!

значит лучше в программах не использовать циклы для малого число действий выходит??

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

ELITE пишет:

значит лучше в программах не использовать циклы для малого число действий выходит??

Дело не в циклах, а в функции pow. Циклы тут не при чём, от слова - совсем.

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

я так и думал) а как можно обойти ROW с минимальными затратами в цикле??

b707
Offline
Зарегистрирован: 26.05.2017

ELITE пишет:

я так и думал) а как можно обойти ROW с минимальными затратами в цикле??

а как вы делали в первом сообщении - чем не подходит?

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

я люблю красиво делать, а 1 строчка цикла явно красивее 8 строк...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ELITE пишет:

я люблю красиво делать, а 1 строчка цикла явно красивее 8 строк...

А что в две строки  цикл не устраивает?

sadman41
Offline
Зарегистрирован: 19.10.2016

ELITE пишет:

я люблю красиво делать, а 1 строчка цикла явно красивее 8 строк...

В школе нас учили, что необязательно каждый раз взводить в новую степень. Достаточно предыдущее значение умножить на...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

 необязательно каждый раз взводить в новую степень. Достаточно предыдущее значение умножить на...

Тсс....  разве это есть в ЕГЭ?

5N62V
Offline
Зарегистрирован: 25.02.2016

sadman41 пишет:

В школе нас учили, что необязательно каждый раз взводить в новую степень. Достаточно предыдущее значение умножить на...

курс доллара?

sadman41
Offline
Зарегистрирован: 19.10.2016

5N62V пишет:

sadman41 пишет:

В школе нас учили, что необязательно каждый раз взводить в новую степень. Достаточно предыдущее значение умножить на...

курс доллара?

Котика.

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

sadman41 пишет:

5N62V пишет:

sadman41 пишет:

В школе нас учили, что необязательно каждый раз взводить в новую степень. Достаточно предыдущее значение умножить на...

курс доллара?

Котика.

котики так не скачут, это песики уже, их выгоднее....

//а вообще - для возведение надо кудато запоминать - а это минимум лонг = потеря 4 байт сразу - что тоже не самое целесообразное...

а со сдвигами регистров на ардуино я еще не разобрался

//пс я школу закончил еще тогда, когда о ЕГЭ даже не слышали...

b707
Offline
Зарегистрирован: 26.05.2017

ELITE - вместо вычисления степеней в програмее сделайте статический массив, где индексом будет стпень, а величиной - результат 10 в этой степени.

sadman41
Offline
Зарегистрирован: 19.10.2016

4 байта на long супротив 2кб на pow(), не говоря уже о вычислительном оверхеде? Снимаю шляпу...

А вообще - b707 дело пишет. В fast реализации itoa как раз и применена кодовая таблица. И делений нет. И вычислений остатка. Работает со свистом. Только я все время мучительно вспоминаю, когда на него смотрю - как же эта гадина фунциклирует-то...

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

продолжение - весь алгоритм преобразования

http://arduino.ru/forum/programmirovanie/pokritikuite-algoritm-razbora-c...