Найти самую раннюю дату - Pascal ABC
Формулировка задачи:
Найти самую раннюю дату.
Данные сведения о различных даты. Каждая дата - это число , месяц и год. Найти самую раннюю дату.
Решение задачи: «Найти самую раннюю дату»
textual
Листинг программы
type
tdate = record
day, month, year: integer;
str: string;
end;
var
date, min: tdate;
s: string;
function cmp(a, b: tdate): boolean;
begin
cmp := (a.year < b.year) or (a.year = b.year) and (a.month < b.month) or (a.year = b.year) and (a.month = b.month) and (a.day < b.day);
end;
begin
writeln('Введите даты, для окончания ввода введите CTRL+Z');
repeat
readln(s);
date.str := s;
date.day := strtoint(copy(s, 1, pos('.', s) - 1));
delete(s, 1, pos('.', s));
date.month := strtoint(copy(s, 1, pos('.', s) - 1));
delete(s, 1, pos('.', s));
date.year := strtoint(s);
if (min.str = '') or cmp(date, min) then min := date;
until eof;
writeln('Самая ранняя дата: ', min.str);
end.
Объяснение кода листинга программы
- В начале объявляются необходимые переменные типа tdate, date, min, s.
- Затем идет функция cmp, которая определяет порядок дат.
- В основной части программы объявляется переменная min, которая будет хранить самую раннюю дату.
- Затем идет цикл, в котором считывается строка со временной меткой от пользователя.
- Строка преобразуется в целое число для каждого поля (день, месяц, год).
- Если введенная строка является самой ранней датой из сохраненных, то она обновляется.
- Цикл продолжается до тех пор, пока не будет введено достаточное количество дат или пока не будет достигнут конец файла.
- По окончании ввода выводится самая ранняя дата.