1. Общий знаменатель дроби
function DrobObschijZnamenatel(a, b: integer): integer;
var z: integer;
begin
If a>b then
begin
z:=a;
a:=b;
b:=z;
end;
Result:=b;
While Result mod a<>0 do
Result:=Result+b;
end;
где
a - знаменатель первой дроби;
b - знаменатель второй дроби.
Например, DrobObschijZnamenatel(6, 8) выведет '24'.
2. Сложение обыкновенных дробей
function DrobSlozhenie(a1, b1, a2, b2: integer; var a, b: integer): real;
var i, m: integer;
begin
b:=DrobObschijZnamenatel(b1, b2);
a1:=b div b1 * a1;
a2:=b div b2 * a2;
a:=a1+a2;
If a<b then
m:=Abs(a) else
m:=Abs(b);
For i:=m downto 2 do
If (a mod i = 0) and (b mod i = 0) then
begin
a:=a div i;
b:=b div i;
Break;
end;
Result:=a/b;
end;
где
a1, b1 - числитель и знаменатель первой дроби;
a2, b2 - числитель и знаменатель второй дроби;
a, b - числитель и знаменатель полученной дроби.
Например, DrobSlozhenie(1, 6, 3, 10, a, b) выведет '0,466666666666667', а = '7', b = '15'; DrobSlozhenie(1, 6, -3, 10, a, b) выведет '-0,133333333333333', а = '-2', b = '15'.
|