Исправить код - Pascal
Формулировка задачи:
Помогите, пожалуйста, исправить программу, чтобы чтение было из файла
Требуется определить, в какой момент времени черепаха сможет вернуться домой, съев все одуванчики и затратив на путешествие наименьшее время.
Входные данные
В 1-й строке входного файла находятся 2 целых числа, разделенные пробелом: vmax (в см/мин) и d (в минутах), 0 < vmax ≤ 200, 0 ≤ d ≤ 500.
Во 2-й строке находится число N – количество одуванчиков (в штуках). 0 ≤ N ≤ 1400 при d = 0, в противном случае 0 ≤ N ≤ 200.
В каждой из последующих N строк расположены: целое число xi – расстояние от одуванчика до начала грядки (в сантиметрах), 0 ≤ xi ≤ 32767, и через пробел ti – момент прорастания одуванчика (в формате hh:mm).
Выходные данные
Выходной файл должен содержать момент времени возвращения черепахи домой (в формате hh:mm), округленный до целых минут в большую сторону.
var
x, t, dx: array[0..1400] of integer;
vmax, d, n, i, count, answer: integer;
s: string;
time, min, max, wait: real;
begin
read(vmax, d, n);
x[0] := 0;
for i := 1 to n do
begin
read(x[i], s);
dx[i] := x[i] - x[i - 1];
t[i] := 60 * (10 * ord(s[2]) + ord(s[3]) - 528) + 10 * ord(s[5]) + ord(s[6]) - 528 - t[i - 1]
end;
min := 0;
max := t[n];
repeat
wait := (min + max) / 2;
time := wait;
count := n;
for i := 1 to n - 1 do
begin
time := time + dx[i] / vmax;
if time >= t[i] then
begin
dec(count);
time := time + d;
end;
end;
time := time + dx[n] / vmax;
if max - min < 0.1 then
begin
time := time + x[n] / vmax + count * d;
answer := trunc(time + 0.9 - 1e-9);
write(answer div 600, answer div 60 mod 10, ':', answer mod 60 div 10, answer mod 60 mod 10);
exit
end
else if time < t[n] then min := wait
else max := wait
until false;
end.Решение задачи: «Исправить код»
textual
Листинг программы
Close(input);
Объяснение кода листинга программы
Close- это имя процедуры, которая закрывает файл.input- это переменная файла, которая представляет стандартный ввод, полностью прочитав входные данные из файла, который обычно является клавиатурой.