Код
Program t1;
uses
crt;
var
i:integer;
function NOD(a:integer; b:integer):integer;
begin
while(a<>0) and (b<>0) do if a>=b then a:=a mod b else b:=b mod a;
NOD:=a+b;
end;
procedure ratio;
var
numerator,denominator: array [1..1000] of integer;
n,numsum,densum,usednod:integer;
begin
numsum:=0;
writeln('input number of ratios');
write('n=');
readln(n);
writeln('input numerator of ratio, then press "Enter", then input denominator of ratio');
writeln('input ratios');
for i:=1 to n do
begin
write('ratio ',i,'=');
read(numerator[i]);
write('/');
read(denominator[i]);
densum:=denominator[1];
numsum:=0;
end;
for i:=2 to n do
begin
densum:=densum*denominator[i];
end;
for i:=1 to n do
begin
numsum:=numsum+(densum div denominator[i])*numerator[i];
end;
usednod:=NOD(numsum,densum);
numsum:=numsum div usednod;
densum:=densum div usednod;
writeln('Sum is ',numsum,'/',densum);
end;
begin
clrscr;
ratio;
end.
По-прежнему сильно корявое, но теперь хоть считает правильно и дробь сокращает. Жалко, что человека предыдущим вариантом подвёл(