Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида (P – целое, Q—натуральное): а) сложения; б) умножения; в) сокращения дроби. Дробь представить следующим типом: Type ...

Реализовать в виде модуля набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида (P – целое, Q—натуральное): а) сложения; б) умножения; в) сокращения дроби. Дробь представить следующим типом: Type Frac=Record P: Integer; Q: 1..32767 End; Используя этот модуль найти: 1) сумму двух дробей, результат представить в виде несократимой дроби; 2) произведение двух дробей, результат представить в виде несократимой дроби.
Гость
Ответ(ы) на вопрос:
Гость
type   Frac = record     P: integer;     Q: 1..32767   end; function gcd(a: integer; b: integer): integer; {Нахождение НОД} var   i: integer; begin   while b <> 0 do   begin     a := a mod b;     i := b; b := a; a := i   end;   result := a end; function RedFrac(a: Frac): Frac; {Сокращение дроби} var   igcd: integer;   r: Frac; begin   igcd := gcd(a.P, a.Q);   r.P := a.P div igcd;   r.Q := a.Q div igcd;   RedFrac := r end; function Add(a, b: Frac): Frac; {Сложение дробей} var   r: Frac; begin   r.P := a.P * b.Q + b.P * a.Q;   r.Q := a.Q * b.Q;   Add := RedFrac(r) end; function Mult(a, b: Frac): Frac; {Умножение дробей} var   r: Frac; begin   r.P := a.P * b.P;   r.Q := a.Q * b.Q;   Mult := RedFrac(r) end; var   m, n, k: Frac; begin   m.P := 4; m.Q := 15; {4/15}   n.P := 9; n.Q := 25; {9/25}   k := Add(m, n);   Writeln(k.P, '/', k.Q);   k := Mult(m, n);   Writeln(k.P, '/', k.Q); end. Результат выполнения программы: 47/75 12/125
Не нашли ответ?
Ответить на вопрос
Похожие вопросы