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

Реализовать в виде модуля набор подпрограмм для выполнения над обыкновенными дробями вида P /Q (где Р — целое число, Q — натуральное число). Вариант 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 b>0 do (a,b):=(b,a mod b);     Result:=a   end;     function ReductSF(p:SF):SF;   begin     var t:=Gcd(p);     if t>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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы