Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Генерация календарной сетки
DF2 :: ФОРУМЫ > Основные форумы > Софт и железо > Программирование / Coding
izrukvruki
Никто случайно не пытался создать программу, генерирующую календарную сетку на заданный год?

Во многих программах (Ворд, КорелДров и пр.) есть скрипты или плагины, делающие это, но что делать если нет этих программ, а сетка нужна?

В принципе программа достаточно простая, главная сложность в том, с какого дня недели начинается год, и не забыть о високосном дне...

Структура самого календаря проста ((tab) - символ табуляции, в VB обозначается vbtab, для 2009 года год начнется в четверг):

2009
Январь
(tab)ПН(tab)ВТ(tab)ЧТ(tab)ПТ(tab)СБ(tab)ВС
(tab)(tab)(tab)1(tab)2(tab)3(tab)4
.......
izrukvruki
интересно, а как эту формулу вывести?
gamecreator
тебе нужен вывод или сама формула? выводится она по видимому каким-то хитрым искусственным способом.
izrukvruki
формула. просто интересно
Хмм..
Если отталкиваться от 1 января 1583 г. (для этого нужно узнать какой это день недели и какой год) если предположить что это понедельник и высокосный год будет в 1587 тогда зная кол-во дней в году получаем.

(наш@год-1583)\4 = кол.выс.год
примечание \ - означает деление с остатком
получим кол-во высокосных лет.

тогда кол-во дней прошедших ((наш@год-1583-кол.выс.год)*365+кол.выс.год*366))\7 - получим остаток, который и будет днем недели. 0 - понедельник

Добавлено ([mergetime]1227730178[/mergetime]):
Возможно, если раскрыть скобки, то что-то похожее и получиться. При условии что предположения были верны. Если нет, то нужно будет делать поправки в формуле.

Короче думаю что смысл таков. Это я считал целые года, но можно еще и дни добавить

Добавлено ([mergetime]1227730545[/mergetime]):
а - наш год
b - день в году

((а-1583-(а-1583)\4)*365+((а-1583)\4)*366)+b )%7

Если еще для b написать алгоритм нахождения по месяцу и дате то получим окончательную формулу и потом раскрыть скобки... короче мне лень и так все ясно
gamecreator
Хмм.., ты забыл про то, что если год кратен 100 и не кратен 400, то он не високосный.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.