Доброго времени суток! Подскажите пожалуйста, возможно ли вернуть с функции несколько значений ? Написал функцию, которая, добавляет к указанному времени интервал в минутах. То есть, у нас есть время, допустим, 15:04:25 Нам надо выполнить какое нибудь действие через 35 мин. То есть, мы должны получить время, 15:39:25 Если у нас, допустим время 15:54:22 И надо выполнить какое нибудь действие через 55 мин. То мы должны получить время, 16:49:22 Вот написанная мною функция интервала, которая принимает значения: Код (C++): int hour, int minute, int second, int interval_minuts И должна возвратить часы, минуты, секунды с добавленным интервалом. Но, как возвратить несколько значений, меня поставило в тупик. Вот сам код функции. Код (C++): void time_intrval(int hour, int minute, int second, int interval_minuts) { int hours = 0; int minuts = 0; int seconds = second; if(interval_minuts <= 1439) // interval <= 23:59:00 { if((minute + interval_minuts < 60)) { minuts = minute + interval_minuts; hours = hour; } else { minuts = minute + interval_minuts; hours = hour; while((minuts >= 60)) { hours++; if(hours >=24) hours = 0; minuts = minuts - 60; } } } Serial.println((String)hours + ":" + (String)minuts + ":" + (String)seconds); } Данная функция добавляет к указному времени интервал в минутах, и выводит его в терминал. Но, надо вернуть эти значения, и дальше их обрабатывать.
Есть пару вариантов: 1. Возвращать в структуре: Код (C++): typedef struct { int hour; int minute; int second; } t_ret; t_ret time_intval(int hour, int minute, int second) { t_ret t; t.hour = hour + 1; ... return t_ret; } 2. Передавать параметры в функцию по ссылке: Код (C++): void time_intrval(int& hour, int& minute, int& second, int interval_minuts) { hour += interval_minuts; } int h = 10, m=20, s = 30; Serial.print("Hour before call: "); Serial.println(h); time_intrval(h,m,s,2); Serial.print("Hour after call: "); Serial.println(h);
Хорошо, допустим мне надо создать 4 интервала, каждый по себе, работает отдельно. То есть, мне надо создавать 4 структуры или 4 группы переменных ? Интервалом может быть и 16
Нет, структуру определяете один раз - это тип данных (как int, char, double, ...). Переменных с типом этой структуры, можете объявить сколько Вам нужно.
сделайте переменные глобальными и меняйте их в функции, делов- то. Вам же три переменных только нужно, не так ли?
Тоже думал об глобальных переменных. Но. Мне на данный момент надо создавать 4 интервала. В лупе мы проверяем соответствует ли реальное время к времени с интервалом. Таких проверок должно быть 4. То есть, как понимаю, нам надо создать 4 * 3 переменных (h,m,s). Если это не так, поправьте.
Вам же уже давали пример со структурой: Код (C++): typedef struct { int hour; int minute; int second; } t_ret; Здесь, t_ret - название структуры. Можете назвать по-своему. Вместо int, достаточно указать тип byte. Объявите четыре (или сколько требуется) переменных, например: Код (C++): t_ret t1, t2, t3, t4; Соответственно, доступ к значениям полей переменных: Код (C++): t1.hour ... t1.minute ... t1.second ...