Раздел 3. Календарь
В этом раздела
одна задача, и ее нужно решить. К защите
задания нужно знать алгоритм и уметь
объяснить работу своей программы.
Задача 8. Определение
дня недели для заданной даты
В древности был
изобретен Юлианский календарь, согласно
которому в году 365 дней. Но если год
кратен 4, он високосный и в нем 366 дней.
В настоящее время используется более
точный, Григорианский календарь. В нем
високосными являются годы, кратные 4 и
400, но годы, кратные 100, и при этом не
кратные 400, не являются високосными.
Таким образом, разница между Юлианским
и Григорианским календарями увеличивается
на три дня за каждые за 400 лет. На настоящее
время разница между ними составляет 13
дней и увеличится на 1 день после 2100
года. Юлианский календарь до сих пор
используется православной церковью
Для определения
дня недели для заданной даты нужно
определить количество дней между
заданной датой и некоторой базовой
датой. В качестве базовой даты удобнее
выбрать какую-либо дату, соответствующую
понедельнику, лучше, в начале года.
Например, 1 января 2001 года или 1 января
2007 года, которые (по Григорианскому
календарю) приходятся на понедельник.
Если присвоить
понедельнику номер 0, а воскресенью –
номер 6, количество дней между заданной
и базовой датой достаточно будет поделить
по модулю 7 (найти остаток от деления на
7), чтобы получить номер дня недели.
Подсчитать
количество дней можно, определив
количество целых лет между базовой и
текущей датой, с учетом високосных дней,
и количество месяцев, с учетом возможной
разницы в количестве дней в феврале.
Задание
Написать программу,
запрашивает год, месяц и день и выводит
название дня недели, соответствующее
заданной дате, исходя из Григорианского
календаря. Диапазон лет – от 1900 до 2099.
7