Вечный календарь - 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.

Объяснение кода листинга программы

  1. В начале кода подключается библиотека crt, которая обеспечивает работу с консолью.
  2. Объявляются переменные d, m, z, c, y, a и day типа integer.
  3. Объявляется переменная e типа integer.
  4. Объявляется переменная den типа string.
  5. Выводится сообщение с просьбой ввести дату в определенном формате.
  6. Считывается значение переменной d, затем значение переменной m и z.
  7. В зависимости от значения переменной m выполняется соответствующий блок case.
  8. Переменная c вычисляется как частное от деления z на 100.
  9. Переменная y вычисляется как остаток от деления z на 100.
  10. Переменная day вычисляется по формуле: abs(trunc(2.6m-0.2)+d+y div 4+y+c div 4-2c)
  11. Переменная a вычисляется как остаток от деления значения переменной day на 7.
  12. В зависимости от значения переменной a выполняется соответствующий блок case.
  13. Выводится сообщение с именем дня недели в указанной дате.
  14. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы