Помогите с логикой

Dantes3000
Offline
Зарегистрирован: 12.04.2018

Есть код. Язык си-подобный. 

функция getlocaltime возвращает в указанные переменные локальное время на компе.

суть логики: если сейчас от 21 вечера до 1 ночи, то скрипт ждет когда наступит 1:15 ночи или больше. 

пример:

int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;

getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);

if(Hour>=21 && Hour<=1) 
{

for(sleep(10); Hour!=1 && Minute<15; getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds))
{
beep(500, 100);
sleep(1000);
}

}

 

Dantes3000
Offline
Зарегистрирован: 12.04.2018

Как обойти эту фигню, что Hour не может быть одновременно и больше и 21 и меньше 1?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

В данном случае, думаю, поможет замена "И" на "ИЛИ".

Dantes3000
Offline
Зарегистрирован: 12.04.2018
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);

  if(Hour>19 || Hour <1) 
  {
      for(sleep(10); Hour==1 && Minute<10; getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds))
      {
      sleep(1000);
      } 
 
    }

 

Врооооде бы вот так вот работает. Если сейчас от 20 до 0 ночи, то ждем 1:11

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

меньшеРавно, а не меньше часа.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А зачем вообще здесь цикл for? Наиболее подходящим ИМХО здесь while. И программа была бы более читаемой.