Воплотить в виде модуля набор подпрограмм для выполнения над обыкновенными дробями

Воплотить в виде модуля набор подпрограмм для исполненья над обычными дробями вида P /Q (где Р целое число, Q естественное число). Вариант 1 В раздел реализации включить подпрограмму вычисления величайшего общего делителя и на ее основе подпрограмму сокращения дробей. Помогите написать в паскале

Задать свой вопрос
1 ответ
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программка не работает, обновите версию!

unit ASM;

interface

  type SF=(integer,integer);
  function AddSF(a,b:SF):SF;
  function SubSF(a,b:SF):SF;
  function MultSF(a,b:SF):SF;
  function DivSF(a,b:SF):SF;
 
implementation
 
  function Gcd(p:SF):integer;
  begin
    (var a,var b):=p;
    a:=abs(a); b:=abs(b);
    while bgt;0 do (a,b):=(b,a mod b);
    Result:=a
  end;
 
  function ReductSF(p:SF):SF;
  begin
    var t:=Gcd(p);
    if tgt;1 then Result:=(p[0] div t,p[1] div t)
    else Result:=p
  end;
 
  function AddSF(a,b:SF):=ReductSF((a[0]*b[1]+a[1]*b[0],a[1]*b[1]));
 
  function SubSF(a,b:SF):=ReductSF((a[0]*b[1]-a[1]*b[0],a[1]*b[1]));

  function MultSF(a,b:SF):=ReductSF((a[0]*b[0],a[1]*b[1]));
    
  function DivSF(a,b:SF):=ReductSF((a[0]*b[1],a[1]*b[0]));
 
end.

***** Пример работы с модулем *****

uses ASM;

begin
  var a:=(5,24);
  var b:=(7,8);
  var c:=AddSF(a,b);
  Writeln(a[0],'/',a[1],'+',b[0],'/',b[1],'=',c[0],'/',c[1])
end.

Итог

5/24+7/8=13/12
, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы

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

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

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

Войти на сайт