![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
Нужно решить задачу, не используя стандартных типов вроде TDateTime...
Задача выглядит так: "Для заданной даты вычислить день недели". |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Надо читать правила построения Григорианского календаря, когда там эти високосные годы и т.п., а затем чистая арифметика.
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
Vit, а где это взять
|
|||
|
||||
| Kurt |
|
|||
|
Увлеченный ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1662 Регистрация: 22.8.2003 Где: Краснодар Репутация: нет Всего: 36 |
Во!
Рекомендую! Подходит для любого ЯП! Рассказываю алгоритм.. Пусть n - день недели (n=0 - воскресение, n=1 - понедельник и т.д n=6 - суббота) d - число месяца(дата); m - номер месяца, если начинать счет с марта: 1 - март, 2 - апрель,.. 12 - февраль.(такая нумерация - для устранения проблем с февралем - то 28 то 29 дней..). y - номер года в столетии; c - количество столетий с учетом того, что январь считается 11-м, а февраль - 12-м месяцем предыдущего года). Т.е для, допустим, 2000г., то для даты на январь-февраль, считаем y=99, c=19, для других месяцев y=0, c=20. Далее вычисляем число W: W = d+[(13*m-1)/5]+y+[y/4]+[c/4]-2*c [] - целая часть от числа (например, [3.14]=3, [-3.14]=-4) Теперь n = остаток от деления на 7 числа W. Все. Как интерпретировать n я описал. Если W отрицательно, то остаток от деления на 7 все равно должен быть >= 0. Например, W=-25=7*(-4)+3. Пеэтому n=3 - среда. Алгоритм точно работает для ЛЮБОЙ даты н.э. (проверено!). Как ДО Н. Э. - честно говоря, не знаю, не пробовал. Enjoy it! -------------------- Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед) ... Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн) |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
Kurt, спасибо. Пока не смотрел, но выложу готовый свой вариант...
|
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
С русским не продумал... Но ничего, и так ясно...
|
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
В "Алгоритмы" обсуждалось недавно.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |