Цитата:
Сообщение от Настена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.