


Помогите оптимизировать код на Pascal
В файле file.txt в первой строчке число 4, во второй четыре разных числа
нужно
выбирать два из них и, если они одинаковые, одно из них стереть. Если числа разные, то он вычитает из большего числа меньшее до тех пор, пока они не станут одинаковыми. В конце концов должно остаться одно число. его нужно записать в файл fileof.txt
нужно что бы программа выполнялась меньше чем за 1 сек
var
i, x: longint;
f: text;
t: array[1..4] of longint;
begin
Assign(f, 'file.txt');
Reset(f);
readln(f, x);
for i := 1 to 4 do read(f, t[i]);
close(f);
for i := 4 downto 2 do
begin
if t[i] = t[i - 1]
then t[i] := 0
else begin
repeat
if t[i] > t[i - 1]
then t[i] := t[i] - t[i - 1]
else t[i - 1] := t[i - 1] - t[i];
until t[i] = t[i - 1];
t[i] := 0;
end;
end;
Assign(f, 'fileof.txt');
rewrite(f);
write(f,t[1]);
close(f);
end.
Плохое описание задания. Я не понял.
> В файле file.txt в первой строчке число 4
может там число чисел, которые во второй строке?
> выбирать два из них
какие два?
> до тех пор, пока они не станут одинаковыми
а что, если они никогда не станут одинаковыми? Например, числа 3 и 2.
repeat
if t[i] > t[i - 1]
then t[i] := t[i] mod t[i - 1]
else t[i - 1] := t[i - 1] mod t[i];
until t[i] = 0;
Вроде так. но паскалем давно не занимался не помню. Не правильно написал. но уже подправил. А вообще нужно немного править так как может так получиться что t[i-1] станет нулем (если остаток от деления равен нулю то значит число на которое делили и есть требуемое)