Даны две дроби a/b и c/d (a,b,c,d - естественные числа). составить

Даны две дроби a/b и c/d (a,b,c,d - естественные числа). составить программку умножения дроби на дробь. ответ должен быть несократимой дробью. использовать подпрограмму метода Евклида для определения НОД

Задать свой вопрос
Данил Бармакин
Через функцию только, пожалуйста
1 ответ
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программка не работает, обновите версию!

function gcd(a,b:integer):integer; // НОД
begin
  while blt;gt;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:=(a div d)*sgna; b:=(b div d)*sgnb
end;

begin
  var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
  var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
  (a,b):=(a*c,b*d);
  RedFrac(a,b);
  Writeln('Итог умножения: ',a,' / ',b)
end.

Пример
Введите числитель и знаменатель 1-й дроби: 32 1024
Введите числитель и знаменатель 2-й дроби: 60 300
Результат умножения: 1 / 160

В качестве приза - решение на базе входящей в состав PascalABC.NET библиотеки численных методов

uses NumLibABC;

begin
  var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
  var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
  Writeln('Итог умножения: ',Frc(a,b)*Frc(c,d))
end.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт