Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP_lab_programming_advanced.doc
Скачиваний:
7
Добавлен:
23.03.2015
Размер:
59.9 Кб
Скачать

Раздел 3. Календарь

В этом раздела одна задача, и ее нужно решить. К защите задания нужно знать алгоритм и уметь объяснить работу своей программы.

Задача 8. Определение дня недели для заданной даты

В древности был изобретен Юлианский календарь, согласно которому в году 365 дней. Но если год кратен 4, он високосный и в нем 366 дней. В настоящее время используется более точный, Григорианский календарь. В нем високосными являются годы, кратные 4 и 400, но годы, кратные 100, и при этом не кратные 400, не являются високосными. Таким образом, разница между Юлианским и Григорианским календарями увеличивается на три дня за каждые за 400 лет. На настоящее время разница между ними составляет 13 дней и увеличится на 1 день после 2100 года. Юлианский календарь до сих пор используется православной церковью

Для определения дня недели для заданной даты нужно определить количество дней между заданной датой и некоторой базовой датой. В качестве базовой даты удобнее выбрать какую-либо дату, соответствующую понедельнику, лучше, в начале года. Например, 1 января 2001 года или 1 января 2007 года, которые (по Григорианскому календарю) приходятся на понедельник.

Если присвоить понедельнику номер 0, а воскресенью – номер 6, количество дней между заданной и базовой датой достаточно будет поделить по модулю 7 (найти остаток от деления на 7), чтобы получить номер дня недели.

Подсчитать количество дней можно, определив количество целых лет между базовой и текущей датой, с учетом високосных дней, и количество месяцев, с учетом возможной разницы в количестве дней в феврале.

Задание

Написать программу, запрашивает год, месяц и день и выводит название дня недели, соответствующее заданной дате, исходя из Григорианского календаря. Диапазон лет – от 1900 до 2099.

7

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]