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

8 Фев 2020 в 19:41
196 +1
0
Ответы
1
unit FractionOperations;
interface
type
Frac = record
P: Integer;
Q: 1..32767;
end;
function GCD(a, b: Integer): Integer;
procedure Reduce(var F: Frac);
function Add(F1, F2: Frac): Frac;
function Multiply(F1, F2: Frac): Frac;
implementation
function GCD(a, b: Integer): Integer;
begin
if b = 0 then
Result := a
else
Result := GCD(b, a mod b);
end;
procedure Reduce(var F: Frac);
var
divisor: Integer;
begin
divisor := GCD(F.P, F.Q);
F.P := F.P div divisor;
F.Q := F.Q div divisor;
end;
function Add(F1, F2: Frac): Frac;
var
res: Frac;
begin
res.P := F1.P * F2.Q + F2.P * F1.Q;
res.Q := F1.Q * F2.Q;
Reduce(res);
Result := res;
end;
function Multiply(F1, F2: Frac): Frac;
var
res: Frac;
begin
res.P := F1.P * F2.P;
res.Q := F1.Q * F2.Q;
Reduce(res);
Result := res;
end;
end.

Пример использования модуля для нахождения суммы и произведения двух дробей:

program FractionOperationsTest;
uses
FractionOperations;
var
F1, F2, Sum, Product: Frac;
begin
F1.P := 1;
F1.Q := 2;
F2.P := 3;
F2.Q := 4;
Sum := Add(F1, F2);
writeln('Sum: ', Sum.P, '/', Sum.Q);
Product := Multiply(F1, F2);
writeln('Product: ', Product.P, '/', Product.Q);
end.
18 Апр в 17:48
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир