суть такая есть 4 будильника, в любое время контроллер включается смотрит какое сейчас время вычисляет какой следующий будильник должен сработать, рассчитывает сколько секунд осталось до этого будильника и на столько секунд засыпает. Вроде просто но туплю.
как найти наименьшее среди а,б,с,д но большее чем Х
-
sergii2012
- Сержант
- Сообщения: 176
- Зарегистрирован: 07 янв 2019, 16:02
- Имя: Сергей
- Благодарил (а): 8 раз
как найти наименьшее среди а,б,с,д но большее чем Х
как найти наименьшее среди а,б,с,д но большее чем Х.
суть такая есть 4 будильника, в любое время контроллер включается смотрит какое сейчас время вычисляет какой следующий будильник должен сработать, рассчитывает сколько секунд осталось до этого будильника и на столько секунд засыпает. Вроде просто но туплю.
суть такая есть 4 будильника, в любое время контроллер включается смотрит какое сейчас время вычисляет какой следующий будильник должен сработать, рассчитывает сколько секунд осталось до этого будильника и на столько секунд засыпает. Вроде просто но туплю.
как найти наименьшее среди а,б,с,д но большее чем Х
Надеюсь вы знаете, что такое Unix time. Если нет, то почитайте в Гугл.
Дальше всё просто:
Если без всяких оптимизаций
В переменную Х вы получаете текущее время в формате Unix time.
Все переменные (а, б, с, д) у вас так же должны храниться в Unix time.
Из переменной "а" отнимаете переменную Х. Если полученное число отрицательное, переходите к следующему шагу. Если число положительное, записываете его в переменную sleep.
На следующем шаге отнимаете из переменной "б" переменную Х. Если число отрицательное, то переходите к следующему шагу. Если число больше чем sleep, то переходите к следующему шагу. Если число меньше sleep, то перезаписываете переменную sleep полученной разницей.
Повторяете предыдущий шаг, пока не закончатся все установки будильников.
Засыпаете на время которое у вас в переменной sleep/
Возможно это не оптимальный вариант, но как по мне, вполне понятный и реализуемый.
Дальше всё просто:
Если без всяких оптимизаций
В переменную Х вы получаете текущее время в формате Unix time.
Все переменные (а, б, с, д) у вас так же должны храниться в Unix time.
Из переменной "а" отнимаете переменную Х. Если полученное число отрицательное, переходите к следующему шагу. Если число положительное, записываете его в переменную sleep.
На следующем шаге отнимаете из переменной "б" переменную Х. Если число отрицательное, то переходите к следующему шагу. Если число больше чем sleep, то переходите к следующему шагу. Если число меньше sleep, то перезаписываете переменную sleep полученной разницей.
Повторяете предыдущий шаг, пока не закончатся все установки будильников.
Засыпаете на время которое у вас в переменной sleep/
Возможно это не оптимальный вариант, но как по мне, вполне понятный и реализуемый.
-
sergii2012
- Сержант
- Сообщения: 176
- Зарегистрирован: 07 янв 2019, 16:02
- Имя: Сергей
- Благодарил (а): 8 раз
как найти наименьшее среди а,б,с,д но большее чем Х
Последний раз редактировалось sergii2012 11 апр 2021, 20:03, всего редактировалось 2 раза.
как найти наименьшее среди а,б,с,д но большее чем Х
Если у вас будильники должны быть активны и на следующий день, то в 00:00 ко всем переменным (а, б, с, д) вам надо прибавить 86400 (24 часа). Иначе при сравнении с текущим временем (на следующий день) у вас будут отрицательные числа.
-
sergii2012
- Сержант
- Сообщения: 176
- Зарегистрирован: 07 янв 2019, 16:02
- Имя: Сергей
- Благодарил (а): 8 раз
как найти наименьшее среди а,б,с,д но большее чем Х
я из часов реального времени беру только часы и минуты и перевожу их в секундыedyapd писал(а): 11 апр 2021, 11:52 Если у вас будильники должны быть активны и на следующий день, то в 00:00 ко всем переменным (а, б, с, д) вам надо прибавить 86400 (24 часа). Иначе при сравнении с текущим временем (на следующий день) у вас будут отрицательные числа.
-
sergii2012
- Сержант
- Сообщения: 176
- Зарегистрирован: 07 янв 2019, 16:02
- Имя: Сергей
- Благодарил (а): 8 раз
как найти наименьшее среди а,б,с,д но большее чем Х
не работает. записывается первый будильник. последующие не записываются.
как найти наименьшее среди а,б,с,д но большее чем Х
[ref]sergii2012[/ref], в таких случаях выкладывайте проект. Возможно кто-то разберётся и поможет.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость