Программа определения дня недели
{Эта программа вводит дату в формате ДЦ ММ ГГГГ и выводит
'на экран соответствующий этой дате день недели. Описание программы см. п. 2. 7.1.}
var
IsCorrectDate: Boolean; {Признак правильной даты}
d,m,y: Integer; {Вводимая дата – день, месяц и год}
<strong>{---------------}</strong>
Procedure InputDate (var d,m,y: Integer; var correctly: Boolean);
{Вводит в переменные d, m и у очередную дату и проверяет ее.
'Если дата правильная, устанавливает correctly=true, иначе correctly= false }
begin {InputDate}
Write ('Введите дату в формате ДД ММ ГГГГ: ');
ReadLn(d,m,y);
correctly: = (d >=1) and (d<=31) and (m >=1)
and (m<=12) and (y >=1582) and (y<=4903)
end; {InputDate}
{----------------}
Procedure WriteDay (d,m,y: Integer);
const
Days_of_week: array [0..6] of String [11] =
(' воскресенье ', ' понедельник ', ' вторник ',
' среда ', ' четверг ', ' пятница ', ' суббота ');
var
с, w: Integer;
begin
if m < 3 then
begin {Месяц январь или февраль}
m: = m + 10;
у: = у -1
end
else
m: = m -2; {Остальные месяцы}
с: = у div 100; {Вычисляем столетие}
y: = y mod 100; {Находим год в столетии}
w: = abs(trunc(2.6*m-0.2)+d+y div 4+y+c div 4-2*c) mod 7;
WriteLn (Days_of_week [w])
end;
{------------}
begin
repeat
InputDate (d,m,y, IsCorrectDate);
if IsCorrectDate then
WriteDay (d,m, у)
until not IsCorrectDate
end.