В учебном заведении задаётся начало учебного дня. Продолжительность пары , продолжительность обычного и большого перерывов (их места в расписании), количество пар или уроков. Получить расписание уроков на весь учебный день.
const
n = 5;
time_start = '08:00'; { <-- Начало занятий }
lesson = 45; { <-- Продолжительность урока, мин.}
pause_min: integer = 5; { <-- Продолжительность маленькой перемены, мин. }
pause_max: integer = 20; { <-- Продолжительность большой перемены (для теста - считаю, что она одна), мин. }
pause_max_place = 3; { <-- Большая перемена следует после ЭТОГО урока }
function T(start: string; DT: integer): string;
function inttostr(X: integer; len: integer): string;
var s: string;
begin
str(X, s);
while length(s) < len do s := '0' + s;
inttostr := s;
end;
var
hour, min, err: integer;
begin
val(copy(start, 1, pos(':', start) - 1), hour, err);
val(copy(start, pos(':', start) + 1, length(start)), min, err);
min := (min + DT) mod 60;
hour := (hour + DT div 60) mod 24;
T := inttostr(hour, 2) + ':' + inttostr(min, 2);
end;
var i: integer;
begin
dec(pause_max, pause_min);
for i := 1 to n do begin
writeln('#', i:2, ': ',
T(time_start, pred(i)*lesson + pred(i)*pause_min + byte(i > pause_max_place)*pause_max),
' - ',
T(time_start, i*lesson + pred(i)*pause_min + byte(i > pause_max_place)*pause_max))
end;
end.