Воплотить в виде модуля набор подпрограмм для выполнения последующих операций над

Воплотить в виде модуля набор подпрограмм для выполнения следующих операций над обыкновенными дробями вида (P целое, Qестественное):
а) сложения;
б) умножения;
в) сокращения дроби.
Дробь представить следующим типом:
Type Frac=Record
P: Integer;
Q: 1..32767
End;
Используя этот модуль отыскать:
1) сумму 2-ух дробей, результат представить в виде несократимой дроби;
2) творенье 2-ух дробей, результат представить в виде несократимой дроби.

Задать свой вопрос
1 ответ
Type
  Frac = record
    P: integer;
    Q: 1..32767
  end;

function gcd(a: integer; b: integer): integer;
Нахождение НОД
var
  i: integer;
begin
  while b lt;gt; 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



, оставишь ответ?
Имя:*
E-Mail:


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

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

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

Войти на сайт