Kibor |
Отправлено: 20 Сентября, 2018 - 22:31:44
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
?
getlocaltime
CODE:int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
int h1=22, h2=5; //с 22 ночи по 5 утра
loop() alarm();
function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if(Hour>=h2 && Hour<h1) return;
beep(1500, 200); //иначе бип
} |
|
|
Dantes3000 |
Отправлено: 20 Сентября, 2018 - 22:35:30
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
Kibor пишет: ?
getlocaltime
это безусловно понятно, я упрощенно просто написал.
Сейчас 22часа. Пикает, а не должно. Ведь 20 не больше 22...Hour<h1
CODE:int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
int h1=20, h2=5; //с 22 ночи по 5 утра
alarm();
function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if(Hour>=h2 && Hour<h1) return;
beep(1500, 200); //иначе бип
} (Отредактировано автором: 20 Сентября, 2018 - 22:46:32) |
|
|
Kibor |
Отправлено: 21 Сентября, 2018 - 12:32:03
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Dantes3000 пишет: Сейчас 22часа. Пикает, а не должно. Ведь 20 не больше 22...Hour<h1
Ну так исправить
Цитата: if(Hour>=h1 || Hour<h2) return;
CODE:int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
int h1=22, h2=5; //с 22 ночи по 5 утра
loop() alarm();
function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if(Hour>=h1 || Hour<h2) return;
beep(1500, 200); //иначе бип
} |
|
|
Kibor |
Отправлено: 21 Сентября, 2018 - 12:54:43
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Dantes3000 пишет: Условием в одну строчку эту задачу не решить.
да ну?
CODE:int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
int h1=22, h2=5; //с 22 ночи по 5 утра
int a1=18, a2=24; //с 18 ночи по 0 ночи
loop() alarm();
function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if((Hour>=h1 || Hour<h2) || (Hour>=a1 && Hour<a2)) return;
beep(1500, 200); //иначе бип
} |
|
|
Zireael |
Отправлено: 21 Сентября, 2018 - 13:08:31
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: int h1=22, h2=5; //с 22 ночи по 5 утра
С 1 до 6 не прокатит.
Цитата: Hour<a2
Час всегда меньше 24, условие не имеет смысла. |
|
|
Kibor |
Отправлено: 21 Сентября, 2018 - 13:22:53
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Zireael пишет: С 1 до 6 не прокатит.
Цитата:
Hour
Час всегда меньше 24, условие не имеет смысла.
Я показал пример проверки в одну строку двух выражений (или сколько надо). Саму логику. Время оставил с первого примера. Это вообще не принципиально.
От того что будет меняться время ничего не изменится. Думаю идея понятна как надо делать.
CODE:int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
int h1=1, h2=6; //с 1 ночи по 6 утра
int a1=18, a2=24; //с 18 ночи по 0 ночи
loop() alarm();
function alarm()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
if((Hour>=h1 && Hour<h2) || (Hour>=a1 && Hour<a2)) return;
beep(1500, 200); //иначе бип
} |
|
|
Zireael |
Отправлено: 21 Сентября, 2018 - 13:33:23
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
alarm(1, 6); //с 1 до 6
alarm(18, 2); //с 18 до 2
function alarm(int h1, int h2)
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
// Hour = 20;
if((h1>h2 && Hour<h1 && Hour+24>=h2+24) || (h1<h2 && (Hour<h1 || Hour>=h2)))messagebox("Beep");
} |
|
|
|