Условие по времени От и До, т.н тихое время

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

Не могу понять логику...У пользователя есть 2 поля, от куда в переменные n1 и n2 берутся значения часов (только часы, без минут). И в промежутке между ними не должно быть оповещения. 

 

int n1=20, n2=3; 
if(n1==n2 || n2>n1 ||&nbsp;n1<0 || n2<0) messagebox("еггор");

alarm();

function alarm()
{
int Hour=22; //тут мы получаем локальное время на пк через getlocaltime()

if(Hour между 20 вечера и 3 ночи) return; 


tone(500, 500);
}

язык не си, не джава и никакой другой.  Мне нужно лишь пару строк, само условие

mixail844
Offline
Зарегистрирован: 30.04.2012

в чем вопрос вообще? что конкретно не ясно?

переменные n1 и n2 получают значения при инициализации.

К.О.

у вас первое условие всегда ложно и ,судя по всему, alarm() всегда вызываеться,вне зависимости от первого условия.

сбивает с толку фраза "язык не Си и не Java",сразу представляеться какой то эзотерический язык где условия пишутся русской прописью.хотя видно что Си подобный .

как говориться,хочешь свести сума институт академиков,дай им кубик Рубика с перекрашенной клеткой

sva_khv
Offline
Зарегистрирован: 19.12.2016

Замечания по строке кода № 02

1. почему n2>n1 это обязательно ошибка?   а если нужен запрет между 20 и 23 часами?

2. Если есть проверка n1<0 то где проверка n> 23 ?  ну и n2 тоже можно проверить на всякий случай.

Ну а если по делу то на Си это выглядело бы так (с учетом моего п1.)

if(n1<n2)  // оба часа в одни сутки   с 18 до 23
{ if(Hour>=n1&&Hour<=n2) return;
}  
if(n1>n2)  // начало в одни сутки - окончание в других  c 20 до 03
{  if(Hour>=n1&&Hour<=23||Hour>=0&&Hour<=n2) return;
}  
if(n1==n2) return;  // бонус - если равны то прерываемся только в этот час