Проблема со счётчиком
- Войдите на сайт для отправки комментариев
Ср, 14/03/2018 - 17:04
Всем привет!
Хочу написать функцию которая будет в таймере добавлять значение М или MN к переменной в зависимости больше или меньше 10 передаваемое значение в функцию. Но у меня получется какой-то бред.
Возможно из-за преобразования int в String.
Подскажите пожалуйста где я ошибаюсь.
String dightr =""; String dightrlcd =""; int i; void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial.println("I'm startend"); } void loop() { // put your main code here, to run repeatedly: for (i = 0; i <= 15; i++){ Serial.print("I = "); Serial.println(i); Serial.print("If = "); dightrlcd = dightVentFunction(i); Serial.println(dightrlcd); delay(1000); } } String dightVentFunction(int dightv) { Serial.println("Function started"); delay(1000); Serial.println(dightv); delay(1000); if (dightv < 10) { Serial.println("< 10 = "); String dightr = dightv+"MN"; Serial.println(dightr); } else { Serial.println("> 10 = "); String dightr = dightr+"M"; Serial.println(dightr); } return dightr; }
а что в итоге вы хотели получить? и в чем проблема?
Если значение i меньше 10 положить в переменную значение i+MN, если больше i+M.
Например i=9, значит функция должна вренуть значение 9MN. Если например i=12, то ф-ция должна вернуть 12M
Немного поигрался со скетчем и получилось выводить полученное значение в теле ф-ции строки 34 и 39. Но сама ф-ция ничего не возвращает (строка 20).
Если значение i меньше 10 положить в переменную значение i+MN, если больше i+M.
Например i=9, значит функция должна вренуть значение 9MN. Если например i=12, то ф-ция должна вернуть 12M
String result = String( i ) + String( i < 10 ? "MN" : "M" );
И потом можете затолкать это в функцию.
else {
У вас dightr объявлена как локальная переменная в блоке else { ... } - к тому моменту, когда вы её пытаетесь return, она давно уже уничтожена (по завершению блока).
Если значение i меньше 10 положить в переменную значение i+MN, если больше i+M.
Например i=9, значит функция должна вренуть значение 9MN. Если например i=12, то ф-ция должна вернуть 12M
String result = String( i ) + String( i < 10 ? "MN" : "M" );
И потом можете затолкать это в функцию.
Неправильный ответ. Вы не учли, при i=10, ничего делать не надо (по условию, что написал YaSerg).
else {
У вас dightr объявлена как локальная переменная в блоке else { ... } - к тому моменту, когда вы её пытаетесь return, она давно уже уничтожена (по завершению блока).
А как верно?
Объявлена она до setup.
Неправильный ответ. Вы не учли, при i=10, ничего делать не надо (по условию, что написал YaSerg).
YaSerg написал дословно следующее (разуйте глаза):
Где здесь "ничего не делать"?
А как верно?
Объявлена она до setup.
Да она может быть хоть 10 раз объявлена "до"...
А строки 33 и 38 в вашем листинге в сообщении #3 - это я писал?
А как верно?
Объявлена она до setup.
Да она может быть хоть 10 раз объявлена "до"...
А строки 33 и 38 в вашем листинге в сообщении #3 - это я писал?
Протупил. Спасибо!
Неправильный ответ. Вы не учли, при i=10, ничего делать не надо (по условию, что написал YaSerg).
YaSerg написал дословно следующее (разуйте глаза):
Где здесь "ничего не делать"?
Если в ТЗ не написано, что делать при i=10, то это не значит, что программа должна делать, что программист пожелает. А в условии речь идет только о <10 и >10. Так что разувайте глаза сами, читая ТЗ.