Program nd; function nod(n,m: integer): integer; begin while(n<>0) and (m<>0) do begin if n>=m then n:=n mod m else m:=m mod n; end; nod:=m+n; end; var m1,m2,n1,n2,t,ch,zn: integer; begin write('введите числитель и знаменатель 1 дроби через пробел: '); readln(m1,n1); write('введите числитель и знаменатель 2 дроби через пробел: '); readln(m2,n2); ch:=(n2*m1+m2*n1) div nod(n2*m1+m2*n1,n1*n2); zn:=(n1*n2) div nod(n2*m1+m2*n1,n1*n2); write(m1,'/',n1,' + ',m2,'/',n2,' = '); if zn=1 then write(ch) else write(ch,'/',zn); end.
3 votes Thanks 0
srzontmp
Программа зацикливается при вводе введите числитель и знаменатель 1 дроби через пробел: 2 3 введите числитель и знаменатель 2 дроби через пробел: -4 3
Answers & Comments
Verified answer
Program nd;function nod(n,m: integer): integer;
begin
while(n<>0) and (m<>0) do
begin
if n>=m then n:=n mod m else m:=m mod n;
end;
nod:=m+n;
end;
var m1,m2,n1,n2,t,ch,zn: integer;
begin
write('введите числитель и знаменатель 1 дроби через пробел: ');
readln(m1,n1);
write('введите числитель и знаменатель 2 дроби через пробел: ');
readln(m2,n2);
ch:=(n2*m1+m2*n1) div nod(n2*m1+m2*n1,n1*n2);
zn:=(n1*n2) div nod(n2*m1+m2*n1,n1*n2);
write(m1,'/',n1,' + ',m2,'/',n2,' = ');
if zn=1 then write(ch) else write(ch,'/',zn);
end.
введите числитель и знаменатель 2 дроби через пробел: -4 3