Вечный календарь - Turbo Pascal

Формулировка задачи:

Тема: Оператор варианта CASE. Цель: Составление, редактирования и отладка программ с оператором выбора CASE. В11. «Вечный календарь». Даны натуральные числа a, b, c, которые обозначают число, месяц и год. Определить день недели, на который недели падает указанная дата. При решение этой задачи можно считать, что исследуемая дата лежит в диапазоне от 1582 до 4902 гг. В этом случае номер дня недели (воскресенье имеет номер 0, понедельник-1, суббота-номер 6) равен остатку от деления на 7 от значения выражения. (2,6m-0,2)+d+y+(y/4)+(c/4)-2c, где d-номер дня в месяц (1,2,…); m-номер месяц в году, нумерация начинается с марта (март имеет номер 1, апрель номер 2,…, декабарь-номер 10, январь и февраль считаются месяцами с номерами 11 и 12 предыдущего года). y-две младшие цифры года (00,…,99); c-две старшие цифры года (15,…,49); (x)-означает целую часть числа x.

Код к задаче: «Вечный календарь - Turbo Pascal»

textual
uses crt;
var d,m,z,c,y,a,day: integer;
    e: integer;
    den: string;
 
begin
writeln('Введите дату в формате dd mm yyyy, где d - день, m - месяц, y - год');
writeln('Пример: 19 01 2012');
read(d,m,z);
case m of
01: begin m:=11; z:=z-1; end;
02: begin m:=12; z:=z-1; end;
03: m:=1;
04: m:=2;
05: m:=3;
06: m:=4;
07: m:=5;
08: m:=6;
09: m:=7;
10: m:=8;
11: m:=9;
12: m:=10;
end;
c:=z div 100;
y:=z mod 100;
day:=abs(trunc(2.6*m-0.2)+d+y div 4+y+c div 4-2*c);
a:= day mod 7;
case a of
1: den:='Понедельник';
2: den:='Вторник';
3: den:='Среда';
4: den:='Четверг';
5: den:='Пятница';
6: den:='Суббота';
0: den:='Воскресенье';
end;
writeln('День недели в указанной дате - ',den);
end.

9   голосов, оценка 3.556 из 5


СОХРАНИТЬ ССЫЛКУ