smirnvlad
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору 1. ошибка в обработке месяцев в условии написано что Цитата: (март имеет номер 1, апрель – номер 2,..., декабрь – номер 10, январь и февраль считаются месяцами с номерами 11 и 12 предыдущего года) | теперь ваш код на примере декабря (12) Код: {ОБРАБОТКА ПОЛУЧЕННОГО НОМЕРА МЕСЯЦА} if (month=1) then month:=11 else if (month=2) then month:=12 else if ((month > 2) AND (month < 11)) then month:=month-2; | все условия не выполняются, следовательно месяц останется 12 Код: month:=month-2; if month<1 then begin month:=month+12; year:=year-1; {январь и февраль с номерами 11 и 12 предыдущего года} end; | 2. в паскале есть функция остаток от деления mod, можно заменить Код: _tmp:=year div 100; y:=year-(_tmp*100); | на Код: 3. в условии формула Цитата: [2,6770*m – 0,2] + d + y + [y/4] + [c/4] – 2*c | в коде же Код: _res:=(2677*m-0.2)+d+y+(y/4)+(c/4)-(2*c); | выделенное больше в 1000 раз затем Цитата: [x] означает целую часть числа х | целая часть это округление в сторону 0, в паскале Trunc получаем Код: _res:=Trunc(2.677*m-0.2)+d+y+Trunc(y/4)+Trunc(c/4)-(2*c); | проверяем на сегодняшнем числе 2010 9 7 - вторник формула считает не для всех месяце правильно например 2010 1 1 получается суббота хотя была пятница январь - нет фев,март,...,июнь - правильно июль - нет август, сентябрь - правильно октябрь - нет ноябрь - правильно декабрь - нет |