Вечный календарь - 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.Решение задачи: «Вечный календарь»
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.
Объяснение кода листинга программы
- В начале кода подключается библиотека crt, которая обеспечивает работу с консолью.
- Объявляются переменные d, m, z, c, y, a и day типа integer.
- Объявляется переменная e типа integer.
- Объявляется переменная den типа string.
- Выводится сообщение с просьбой ввести дату в определенном формате.
- Считывается значение переменной d, затем значение переменной m и z.
- В зависимости от значения переменной m выполняется соответствующий блок case.
- Переменная c вычисляется как частное от деления z на 100.
- Переменная y вычисляется как остаток от деления z на 100.
- Переменная day вычисляется по формуле: abs(trunc(2.6m-0.2)+d+y div 4+y+c div 4-2c)
- Переменная a вычисляется как остаток от деления значения переменной day на 7.
- В зависимости от значения переменной a выполняется соответствующий блок case.
- Выводится сообщение с именем дня недели в указанной дате.
- Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д