Работа с условиями, плюсует вместо добавления.

Dima85
Offline
Зарегистрирован: 07.01.2013
    if (rtc[2]+rtc[1] == AutoOff) {
      AutoOff=0;
    }

Вот такой простенький пример.

В AutoOff записывается время, например 1230.

В rtc[2] хранятся часы, а в rtc[1] минуты.

Следовательно если AutoOff совспадает с временем то сто-то происходит.

Но почему выше преведенный пример, вот тут rtc[2]+rtc[1] плюсует 2 фицры. Мне нужно просто необходимо вставить часы и минуты. Пробовал через точку rtc[2].rtc[1] Появляется ошибка компелации. Что делать? 

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Поскольку мы только догадываемся, как описан массив rtc, но как бы то ни было, таким образом сравнивать нельзя.

Самое простое, приводить всё к минутам и сравнивать минуты, например:

const int AutoOff = 12 * 60 + 30;
byte rtc[3] = { 0, 12, 30 };

Тогда сравнение может выглядеть как:

if( ( rtc[1] * 60 + rtc[2] ) == AutoOff )
{
  // Время пришло!
}
else
{
  // Еще не вечер
}

Можно сравнивать и в текстовом формате, однако в моем варианте можно использовать сравнение как на равенство, так и больше/меньше, а с текстом так не получится. Разумеется нужно помнить, что часы и минуты повторяются с периодом в одни сутки ;) Т.е. 12:30 есть и сегодня и завтра и послезавтра и т.п.

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Dima85 пишет:

    if (rtc[2]+rtc[1] == AutoOff) {
      AutoOff=0;
    }

Вот такой простенький пример.

В AutoOff записывается время, например 1230.

В rtc[2] хранятся часы, а в rtc[1] минуты.

Следовательно если AutoOff совспадает с временем то сто-то происходит.

Но почему выше преведенный пример, вот тут rtc[2]+rtc[1] плюсует 2 фицры. Мне нужно просто необходимо вставить часы и минуты. Пробовал через точку rtc[2].rtc[1] Появляется ошибка компелации. Что делать? 

 

 if ( (rtc[2] * 100 + rtc[1] ) == AutoOff ) {
      AutoOff  = 0;
    }

Для сравнения не обязательно умножать минуты на 60 , а часы на 24.

Прозрачнее умножать часы на 100.

А дни на 10000, месяцы на 1000000  .....

Уже и не говорю о годах, сами подберите количество нулей после единицы.

unsigned long приветствуется, если надо.

P.S.

Хотя обычно пишут >=  или <= , а то условие иногда может и не выполнится.