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 := aend;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 := rend;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/7512/125