// PascalABC.NET 3.3, сборка 1634 от 14.02.2018 // Внимание! Если программа не работает, обновите версию!
function NOD(a,b:integer):integer; begin while b>0 do (a,b):=(b,a mod b); Result:=a end;
procedure FracAdd(n1,d1,n2,d2:integer; var n,d:integer); // сложение дробей n1/d1 + n2/d2 = n/d begin (n,d):=(n1*d2+n2*d1,d1*d2); var k:=NOD(n,d); if k<>1 then (n,d):=(n div k,d div k) end;
begin var (a,b):=ReadInteger2('Введите числитель и знаменатель 1й дроби:'); var (c,d):=ReadInteger2('Введите числитель и знаменатель 2й дроби:'); var m,n:integer; FracAdd(a,b,c,d,m,n); if n=1 then Writeln('Сумма=',m) else Writeln('Сумма=',m,'/',n) end.
Пример Введите числитель и знаменатель 1й дроби: 6 15 Введите числитель и знаменатель 2й дроби: 12 300 Сумма=11/25
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.
// Внимание! Если программа не работает, обновите версию!
function NOD(a,b:integer):integer;
begin
while b>0 do (a,b):=(b,a mod b);
Result:=a
end;
procedure FracAdd(n1,d1,n2,d2:integer; var n,d:integer);
// сложение дробей n1/d1 + n2/d2 = n/d
begin
(n,d):=(n1*d2+n2*d1,d1*d2);
var k:=NOD(n,d);
if k<>1 then (n,d):=(n div k,d div k)
end;
begin
var (a,b):=ReadInteger2('Введите числитель и знаменатель 1й дроби:');
var (c,d):=ReadInteger2('Введите числитель и знаменатель 2й дроби:');
var m,n:integer;
FracAdd(a,b,c,d,m,n);
if n=1 then Writeln('Сумма=',m)
else Writeln('Сумма=',m,'/',n)
end.
Пример
Введите числитель и знаменатель 1й дроби: 6 15
Введите числитель и знаменатель 2й дроби: 12 300
Сумма=11/25
Замечание: вводить только натуральные числа!
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.