Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 16:56   #1
siberian_lynx
 
Регистрация: 29.03.2011
Сообщений: 4
Вопрос вычислить количество пятниц приходящих на 13 число заданного столетия

вычислить количество пятниц приходящих на 13 число заданного столетия.
столкнулся с проблемой решая эту задачу не могу ни как придумать алгоритм нужно решить задачу не использую класс DateTime буду благодарен за любую помощь.
siberian_lynx вне форума Ответить с цитированием
Старый 29.03.2011, 18:02   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Создавай объект DateTime на каждое 13 число месяца и года. У DateTime есть поле DayOfWeek - вот его и смотри
Hollander вне форума Ответить с цитированием
Старый 30.03.2011, 15:18   #3
siberian_lynx
 
Регистрация: 29.03.2011
Сообщений: 4
Восклицание

Цитата:
Сообщение от Hollander Посмотреть сообщение
Создавай объект DateTime на каждое 13 число месяца и года. У DateTime есть поле DayOfWeek - вот его и смотри
мне DateTime нельзя использовать...
siberian_lynx вне форума Ответить с цитированием
Старый 30.03.2011, 15:49   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

А что можно?
Hollander вне форума Ответить с цитированием
Старый 30.03.2011, 16:05   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
мне DateTime нельзя использовать...
похоже, очередная учебная задача с идиотскими ограничениями!

Тогда так - берите алгоритм перевода даты из Julian Day Number в обычную дату (день, месяц, год) и обратно. берите алгоритм, который высчитывает день недели для заданной даты в формате Julian Day.
дальше алгоритм такой. Дата "13.1.ЗаданноеСтолетие" -> Julian Day Number. Подсчитать день недели.
Если не пятница, найти ближайшую пятницу. Дальше прибавляя по 7 дней (т.е. цикл по всем пятницам), переводить в обычный формат и проверять - 13-е ли число ? Цикл крутить пока не закончится столетие.
Алгоритм жуткий, крайне неэффективный и мерзкий, зато, думаю, что работоспособный.

И ещё, не забудьте, что в разных странах в разные года были реформы календаря.
(я имею в виду, например, переход на Григорианский календарь). По хорошему, это тоже надо учитывать!


ДОБАВЛЕНО
посмотрел. в статье на Википедии "Вечный календарь"
есть алгоритм "Алгоритм вычисления дня недели":
Цитата:
Стандартный алгоритм

Январь - это 1, Декабрь - 12 месяц. Для определения сдвига используется следующая формула: a=(14-месяц) div 12 (a — вспомогательная величина). Затем определяются год и месяц с учётом поправки: y=год-a; (год — увеличиваем на 1 от исходного). m=месяц+12·a-2.

После вспомогательных операций вычисляется сам день недели:

result=(7000+(день+y+y div 4-y div 100+y div 400+(31*m) div 12)) mod 7

Для юлианского календаря формула выглядит так:

result=(6998+(день+y+y div 4+(31*m) div 12)) mod 7

Результат — число от 0 до 6, где 0 — суббота, 1 — воскресенье, 2 — понедельник, 3 — вторник, 4 — среда, 5 — четверг, 6 — пятница.
Сам не проверял.

Но если это работает. То можно и без использования Julian Day Number сделать программу.

Последний раз редактировалось Serge_Bliznykov; 30.03.2011 в 19:52.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для заданного x вычислить сумму ряда с точностью E (Delphi) Almir Помощь студентам 1 27.03.2011 12:06
Вычислить сумму элементов ряда, заданного формулой timmy92 Помощь студентам 5 17.12.2010 21:50
в С++ число, полученное из заданного, путем удаления цифры, вводимой с клавиатуры Shikarmo4000 Помощь студентам 0 25.05.2010 09:46
[Delphi] Вычислить расположение и начальный кластер заданного каталога на диске. KrL^^ Помощь студентам 3 22.04.2010 20:12
Написать программу которая для заданного символьного ряда подсчитывает количество слов! komarvl Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 11.12.2009 01:42