Показать сообщение отдельно
Старый 31.05.2009, 21:40   #69 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Настена18 Посмотреть сообщение
А в задачке использовались какие-то готовые формулы?? например, высчитывание p0,p1,p2,Full_Number_of_Days??? или вот эта строка: IF p3>=2 THEN Date:=9-p3 ELSE Date:=2-p3??? не могли бы вы объяснить это в двух словах??))) Нам мало того, что задачу надо сдать, так еще и отчитать...а препод углубляется тока так...Заранее спасибо))))
Хорошо, попробую. Full_Number_of_Days - это полное количество дней между ОДНОИМЕННЫМИ датами (например, 1 октября) рассматриваемого года и 1994-го. Зная это число, а также тот факт, что 1 октября 1994 года была суббота, и еще определив p3 - остаток от деления этого числа на 7 (число дней в неделе), можно подсчитать, в зависимости от величины остатка, на какой день недели придется 1 октября года N, и, соответственно, когда будет первое воскресенье. Вот тут у меня и получилось это самое IF p3>=2 THEN Date:=9-p3 ELSE Date:=2-p3 (найдено полулогически, полуэмпирически).
Теперь как определить Full_Number_of_Days? Если бы в году всегда было бы 365 дней, то искомое число составило бы (N-1994)*365. Но среди годов могут быть и високосные, а значит каждые 4 года добавляется лишний день, количество таких годов - p2, значит имеем (N-1994)*365+p2. Но среди годов, кратных 4, могут быть вековые (их количество - p1), а вековые високосными не являются, отсюда (N-1994)*365+p2-p1. Но среди вековых могут попасться p0 тех, что кратны 400 (например, 2000), а такие года вновь становятся високосными. Так что окончательно:
Full_Number_of_Days=(N-1994)*365+p2-p1+p0.
Vladimir_S вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070