Template <typename T>
inline T const& LinearRoot (T const& y, T const& k, T const& b) {
return (y - b) / k;
}
<em>// PascalABC.NET 3.3, сборка 1634 от 14.02.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
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.
<u>Пример</u>
Введите числитель и знаменатель 1й дроби: 6 15
Введите числитель и знаменатель 2й дроби: 12 300
Сумма=11/25
<u>Замечание:</u> вводить только натуральные числа!
I=1, a=6*1-2=4
i=2, a=4*2-2=6
a=6+1=7
1001(2) +х(8)=80(10)
х(8)=80(10)- 1001(2)
х=(80(10)-1001(2) / 8)