Супермен пошел учиться на курсы программистов. На зачете ему попалась задача: "Дата некоторого дня определяется тремя натуральными числами - G (Год), M (Месяц), D (День). По заданным данным определите дату следующего дня." Решите ее. (Используя PASCALabc)
begin writeln('Введите год, месяц и день:'); readln(G, M, D);
if ((G mod 4 = 0) and (G mod 100 <> 0)) or (G mod 400 = 0) then // Проверка на високосный год begin case M of 1, 3, 5, 7, 8, 10, 12: // Месяцы с 31 днем begin if D = 31 then // Если последний день месяца begin D := 1; if M = 12 then // Если последний месяц года begin M := 1; G := G + 1; end else M := M + 1; end else D := D + 1; end; 4, 6, 9, 11: // Месяцы с 30 днями begin if D = 30 then // Если последний день месяца begin D := 1; M := M + 1; end else D := D + 1; end; 2: // Февраль begin if D = 29 then // Если последний день февраля в високосный год begin D := 1; M := M + 1; end else D := D + 1; end; end; end else // Невисокосный год begin case M of 1, 3, 5, 7, 8, 10, 12: // Месяцы с 31 днем begin if D = 31 then // Если последний день месяца begin D := 1; if M = 12 then // Если последний месяц года begin M := 1; G := G + 1; end else M := M + 1; end else D := D + 1; end; 4, 6, 9, 11: // Месяцы с 30 днями begin if D = 30 then // Если последний день месяца begin D := 1; M := M + 1; end else D := D + 1; end; 2: // Февраль begin if D = 28 then // Если последний день февраля begin D := 1; M := M + 1; end else D := D + 1; end; end; end;
program NextDay;
var
G, M, D: integer;
begin
writeln('Введите год, месяц и день:');
readln(G, M, D);
if ((G mod 4 = 0) and (G mod 100 <> 0)) or (G mod 400 = 0) then // Проверка на високосный год
begin
case M of
1, 3, 5, 7, 8, 10, 12: // Месяцы с 31 днем
begin
if D = 31 then // Если последний день месяца
begin
D := 1;
if M = 12 then // Если последний месяц года
begin
M := 1;
G := G + 1;
end
else
M := M + 1;
end
else
D := D + 1;
end;
4, 6, 9, 11: // Месяцы с 30 днями
begin
if D = 30 then // Если последний день месяца
begin
D := 1;
M := M + 1;
end
else
D := D + 1;
end;
2: // Февраль
begin
if D = 29 then // Если последний день февраля в високосный год
begin
D := 1;
M := M + 1;
end
else
D := D + 1;
end;
end;
end
else // Невисокосный год
begin
case M of
1, 3, 5, 7, 8, 10, 12: // Месяцы с 31 днем
begin
if D = 31 then // Если последний день месяца
begin
D := 1;
if M = 12 then // Если последний месяц года
begin
M := 1;
G := G + 1;
end
else
M := M + 1;
end
else
D := D + 1;
end;
4, 6, 9, 11: // Месяцы с 30 днями
begin
if D = 30 then // Если последний день месяца
begin
D := 1;
M := M + 1;
end
else
D := D + 1;
end;
2: // Февраль
begin
if D = 28 then // Если последний день февраля
begin
D := 1;
M := M + 1;
end
else
D := D + 1;
end;
end;
end;
writeln('Следующий день: ', G, '.', M, '.', D);
end.