Составить программу , которая сложить две дроби! Нужно сначала привести к общему знаменателю срочно! Паскаль !
Answers & Comments
smnoregrets// PascalABC.NET 3.3, сборка 1607 от 31.12.2017 // Внимание! Если программа не работает, обновите версию!
function GCD(a,b:integer):integer; // НОД begin while b<>0 do begin a:=a mod b; Swap(a,b) end; Result:=a end;
procedure RedFrac(var a,b:integer); // сокращение дроби begin var (sgna,sgnb):=(Sign(a),Sign(b)); // мы должны учитывать знак! (a,b):=(Abs(a),Abs(b)); var d:=Gcd(a,b); (a,b):=((a div d)*sgna,(b div d)*sgnb) end;
begin var (a,b):=ReadInteger2('Числитель и знаменатель 1-й дроби:'); var (c,d):=ReadInteger2('Числитель и знаменатель 2-й дроби:'); var (p,q):=(a*d+b*c,b*d); RedFrac(p,q); Writeln('Результат: ',p,'/',q) end.
Пример Числитель и знаменатель 1-й дроби: -135 36 Числитель и знаменатель 2-й дроби: 31 60 Результат: -97/30
0 votes Thanks 0
smnoregrets
В конце забыл добавить begin end у последней проверки
Answers & Comments
// Внимание! Если программа не работает, обновите версию!
function GCD(a,b:integer):integer; // НОД
begin
while b<>0 do begin a:=a mod b; Swap(a,b) end;
Result:=a
end;
procedure RedFrac(var a,b:integer); // сокращение дроби
begin
var (sgna,sgnb):=(Sign(a),Sign(b)); // мы должны учитывать знак!
(a,b):=(Abs(a),Abs(b));
var d:=Gcd(a,b);
(a,b):=((a div d)*sgna,(b div d)*sgnb)
end;
begin
var (a,b):=ReadInteger2('Числитель и знаменатель 1-й дроби:');
var (c,d):=ReadInteger2('Числитель и знаменатель 2-й дроби:');
var (p,q):=(a*d+b*c,b*d);
RedFrac(p,q);
Writeln('Результат: ',p,'/',q)
end.
Пример
Числитель и знаменатель 1-й дроби: -135 36
Числитель и знаменатель 2-й дроби: 31 60
Результат: -97/30
cx := GCD(bx, ax); // проверка если можно сократить дробь
if (cx>1) then
writeln(' = ', bx/cx, '/', ax/cx);
end;