Определить по времени установки пирога в духовку время, когда будет подходящее время для его извлечения - Free Pascal
Формулировка задачи:
Пекарь считает, что для получения рождественского пирога идеальной симетричной формы его нужно вынимать из духовки в тот момент, когда часы показывают «палиндромное» время, которое читается одинаково слева-направо и справа-налево.
Напишите программу, которая определяет по времени установки пирога в духовку время, когда будет подходящее время для его извлечения.
Входные данные
В единственной строке входного файла INPUT.TXT записано время установки пирога в духовку в формате HH:MM (00 ≤ HH ≤ 23, 00 ≤ MM ≤ 59).
Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести ближайшее «палиндромное» время в формате HH:MM.
Решение задачи: «Определить по времени установки пирога в духовку время, когда будет подходящее время для его извлечения»
textual
Листинг программы
program palindromic_time;
var
h, m, b, c, r: integer;
begin
repeat
writeln('Введите часы');
readln(h);
if (h < 0) or (h > 23) then
writeln('Неверно введены часы!');
until (h >= 0) and (h <= 23);
repeat
writeln('Введите минуты');
readln(m);
if (m < 0) or (m > 59) then
writeln('Неверно введены минуты!');
until (m >= 0) and (m <= 59);
if (m < 10) and (h < 10) then
writeln('Вы ввели время: 0', h, ':0', m)
else
if h < 10 then
writeln('Вы ввели время: 0', h, ':', m)
else
if (m < 10) then
writeln('Вы ввели время: ', h, ':0', m)
else
writeln('Вы ввели время: ', h, ':', m);
repeat
begin
inc(m);
b := m div 10;
c := m mod 10;
r := (c * 10) + b;
if (m = 0) or (m >= 60) then
begin
inc(h);
if h >= 24 then h := 0;
m := 0;
if (h = 0) and (m = 0) then break;
end;
end;
until r = h;
if m = 0 then
writeln('Ближайшее палиндромное время - 0', h, ':0', m)
else
if h = 20 then
writeln('Ближайшее палиндромное время - ', h, ':0', (b * 10) + c)
else
if (h < 10) then
writeln('Ближайшее палиндромное время - 0', h, ':', (b * 10) + c)
else
if (m <= 10) then
writeln('Ближайшее палиндромное время - ', h, ':0', (b * 10) + c)
else
writeln('Ближайшее палиндромное время - ', h, ':', (b * 10) + c);
end.
Объяснение кода листинга программы
- Программа запрашивает у пользователя ввод часов и минут.
- Проверяет корректность ввода часов и минут.
- Выводит введенное время в зависимости от формата ввода.
- Начинается цикл, который прерывается, когда время становится палиндромом.
- В процессе цикла формируется следующее палиндромное время путем изменения последней цифры минут и переключения последней цифры часов на ноль.
- Когда время становится палиндромом, выводится ближайшее палиндромное время.
- Если время 00:00, то выводится сообщение о ближайшем палиндромном времени, которое было введено в процессе цикла.
- Если время не 00:00, то выводится ближайшее палиндромное время, которое было сформировано в процессе цикла.