реклама на сайте
подробности

 
 
> Алгоритм нахождения праздничной даты.
Jenya7
сообщение Feb 1 2015, 07:38
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть RTC.
Код
struct sRTC
{
    uint8_t rtcYear;
    uint8_t rtcMonth;
    uint8_t rtcDay;
    uint8_t rtcDayOfWeek;
    uint8_t rtcHour;
    uint8_t rtcMin;
    uint8_t rtcSec;

};

extern struct sRTC rtc;

Инициализирую
Код
rtc.rtcYear = 2015;
rtc.rtcMonth = 1;
rtc.rtcDay = 29;
rtc.rtcDayOfWeek = 5;
rtc.rtcHour = 12;
rtc.rtcMin = 30;
rtc.rtcSec = 10;


Нужно послать сигнал когда праздник подошел . Скажем 9 Мая. Как это сделать? Думал забить таблицу праздников на 20 лет вперед и каждый час сравнивать текущую дату но подозреваю это не самое лучшее решение.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение Feb 1 2015, 09:05
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



если пойти прямым путем то раз в сутки мне нужно перебрать все праздничные даты и сравнить с моей, так я знаю наступила праздничная дата или нет. а что если так. взять первый праздник в году и от него отсчитывать дни. при старте системы посчитать где наша дата по отношению к первому празднику.
и потом обрабатывать случаи. скажем прошло сто дней - значит второй праздник, 150 дней - третий праздник и.т.д.
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение Feb 1 2015, 10:33
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(Jenya7 @ Feb 1 2015, 09:05) *
если пойти прямым путем то раз в сутки мне нужно перебрать все праздничные даты и сравнить с моей, так я знаю наступила праздничная дата или нет. а что если так. взять первый праздник в году и от него отсчитывать дни. при старте системы посчитать где наша дата по отношению к первому празднику.
и потом обрабатывать случаи. скажем прошло сто дней - значит второй праздник, 150 дней - третий праздник и.т.д.


There are many ways to skin a cat. Можно, например, завести битовый массив длинной 365 бит sm.gif Если единичка установлена, то в соотв. день - просто праздник какой-то!
Получается типа однобитной хэш-таблицы. Некоторая проблема возникнет, если на один день приходится несколько праздников.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Feb 1 2015, 11:15
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(CrimsonPig @ Feb 1 2015, 16:33) *
There are many ways to skin a cat. Можно, например, завести битовый массив длинной 365 бит sm.gif Если единичка установлена, то в соотв. день - просто праздник какой-то!
Получается типа однобитной хэш-таблицы. Некоторая проблема возникнет, если на один день приходится несколько праздников.

мне кажется что работа с таким массивом не отличается от перебора. мне нужна оптимизация по скорости.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Алгоритм нахождения праздничной даты.   Feb 1 2015, 07:38
- - gerber   Можно отслеживать изменение дня, и в момент измене...   Feb 1 2015, 08:50
|- - CrimsonPig   Цитата(Jenya7 @ Feb 1 2015, 11:15) мне ка...   Feb 1 2015, 11:23
|- - toweroff   Цитата(Jenya7 @ Feb 1 2015, 14:15) мне ну...   Feb 1 2015, 11:26
- - fider   Видимо можно и так, только с учетом високосного го...   Feb 1 2015, 09:07
- - alexeyv   А что если все праздники отсортировать и в момент ...   Feb 2 2015, 04:35
|- - Grizzzly   Цитата(alexeyv @ Feb 2 2015, 07:35) И ник...   Feb 2 2015, 08:23
|- - Jenya7   Цитата(Grizzzly @ Feb 2 2015, 14:23) Не п...   Feb 2 2015, 08:36
|- - Grizzzly   Цитата(Jenya7 @ Feb 2 2015, 11:36) а поч...   Feb 2 2015, 08:42
- - nill   На эти грабли уже наступали? Или это просто пример...   Feb 2 2015, 06:11
- - adnega   Праздники не наступают каждые 10 мс. Поэтому если ...   Feb 2 2015, 09:13
- - WitFed   Мне кажется, что предложение alexeyv было самым сб...   Feb 2 2015, 13:34
- - SM   Вообще, храните время в формате unix time или подо...   Feb 3 2015, 09:28


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 16:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016