Сразу уточню - задача не моя, а взятая из школьной олимпиады. Код тоже не мой. Но вопрос поставил в тупик.
Дано:
1. Условие задачи
Известно, сколько времени электропоезд тратит на проезд между любыми двумя соседними станциями своего маршрута. Известно время отправления с начальной станции. Напишите программу, которая вычислит время отправления электропоезда с каждой станции его маршрута (для последней станции это будет время прибытия - временем стоянки поезда на станциях мы пренебрежем).
Формат входных данных
В первой строке задано время отправления поезда с начальной станции. Время задается в следующем формате: сначала идут две цифры, задающие часы (от 00 до 23), далее идет двоеточие, затем идут две цифры, задающие минуты (от 00 до 59). Пробелы внутри строки, задающей время, не допускаются.
Во второй строке входного файла записано натуральное число N (2≤N≤1000) - количество станций в маршруте электропоезда (включая начальную и конечную станции). В третьей строке записано N-1 число - первое из этих чисел задает время следования в минутах от начальной станции до второй станции, второе - время от второй станции до третьей и т.д. Каждое из этих чисел натуральное и не превышает 1000.
Формат выходных данных
В выходной файл для каждой станции выведите время прохождения поезда через эту станцию. Время должно быть выведено в том же формате, в каком оно задается во входных данных.
2. Получившаяся программка:
program poezd;
var filein,fileout:Text;
min,h,time,c,kolvo,i,put:integer;
S,Szap,perev:string;
begin
Assign(filein,'c.in');
Assign(fileout,'c.out');
Reset(filein);
Rewrite(fileout);
Readln(filein,S);
Writeln(fileout,S);
val(copy(S,1,2),h,c);
Delete(S,1,pos(':',S));
val(copy(S,1,2),min,c);
Readln(filein,S);
val(S,kolvo,c);
Readln(filein,S);
Close(filein);
time:=60*h+min;
for i:=1 to kolvo-1 do
begin
if pos(' ',S)<>0 then
val(copy(S,1,pos(' ',S)-1),put,c)
else
val(S,put,c);
Delete(S,1,pos(' ',S));
time:=time+put;
time:=time mod 1440;
Szap:='';
h:=time div 60;
min:=time mod 60;
if h<10 then
Szap:=Szap+'0';
Str(h,perev);
Szap:=Szap+perev+':';
if min<10 then
Szap:=Szap+'0';
Str(min,perev);
Szap:=Szap+perev;
Writeln(fileout,Szap);
end;
Close(fileout);
halt(0);
end.

3. Тесты:
(сами тесты, к сожалению, неизвестны. результаты тоже).
Из 12 тестов 6 дают неправильный ответ. То есть явно какую-то важную ситуацию упустили.... Переход на следующий день учтен, дату нас выводить не просили... В чем может быть дело?
Входные данные гарантированно корректны.