Задача "Следующий день"
С клавиатуры вводиться текущая дата, написать программу которая выдает дату следующего дня.
Главная сложность работы с датами это их неравномерность (число дней в месяце, високосный или нет год). В этом решении будет предложено один из путей преодоления этих проблем. Буду рад, если данный материал будет полезен коллегам при подготовки учащихся к олимпиадам.
Решение
program nextday;var
r,d,m,g:integer;
last:boolean;
begin
writeln(‘Задайте цифрами сегодняшнюю дату’);
write(‘(число месяц год)-> ’);
readln(d,m,g);
last:=false;
{Разбираемся с месяцами}
case m of
1,3,5,7,8,10,12: if d=31 then last:=true;
4,6,9,11: if d=30 then last:=true;
2: if d=28 then
begin
r:= g mod 4; {Определяем високосный ли год}
if r <> 0 then last:=true;
end;
end;
if last then
begin
writeln(‘Последний день месяца.’);
d:=1;
if m=12 then
begin
m:=1;
g:=g+1;
writeln(‘С наступающим Новым годом!.’);
end;
else
m:=m+1;
end;
else
d:=d+1;
writeln(‘Завтра ’,d,’.’,m,’.’,g);
end.
Если обнаружите ошибку, опишите ее в комментарии под записью. Буду признателен за уточнение и с радостью ее исправлю.
Комментариев нет:
Отправить комментарий