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

Ответы 1

  • 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
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years