Составить программу , которая сложить две дроби! Нужно сначала привести к общему...

0 голосов
18 просмотров

Составить программу , которая сложить две дроби!
Нужно сначала привести к общему знаменателю срочно!
Паскаль !


Информатика (84 баллов) | 18 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// 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
(150k баллов)
0 голосов

Программа и скриншот как она работает в приложениях.


image
(10.8k баллов)
0

В конце забыл добавить begin end у последней проверки

0

должно быть так

0

end else begin
cx := GCD(bx, ax); // проверка если можно сократить дробь
if (cx>1) then
writeln(' = ', bx/cx, '/', ax/cx);
end;

0

с минусами не проверял. Подумал что речь идет только о простых дробях

0

сохранил себе ваше решение. Спасибо!