Написать процедуру, которая складывает два рациональных числа - Turbo Pascal
Формулировка задачи:
2) Для комбинированного типа
написать процедуру p(c,a:drob; var b:drob), которая складывает рациональные числа a и b и присваивает их сумму рациональному параметру с.
Решение задачи: «Написать процедуру, которая складывает два рациональных числа»
textual
Листинг программы
type
natur = 1..maxint;{натуральные числа из диапазона integer}
type
drob = record
ch: integer;
zn: natur;
end;
function NOD(m, n: natur): natur;{наибольший общий делитель}
begin
while m <> n do
if m > n then
m := m - n
else
n := n - m;
NOD := m;
end;
var
z, x, y: drob;
a, b, c, d: natur;
e, f: natur;
kr: natur;
procedure SumDrob(x, y: drob; var z: drob);
begin
z.ch := x.ch * y.zn + x.zn * y.ch;{числитель}
z.zn := x.zn * y.zn;{знаменатель}
kr := NOD(z.ch, z.zn);{нод}
z.ch := z.ch div kr;{сокращаем дробь}
z.zn := z.zn div kr;
end;
begin
writeln('Введите 4 натуральных числа-числители и знаменатели 2х дробей:');
repeat
readln(a, b, c, d);
until(a > 0) and (a <= maxint) and (b > 0) and (b <= maxint) and
(c > 0) and (c <= maxint) and (d > 0) and (d <= maxint);
x.ch := a;
x.zn := b;
y.ch := c;
y.zn := d;
sumdrob(x, y, z);
write('Сумма дробей ', x.ch, '/', x.zn, ' + ', y.ch, '/', y.zn, ' = ', z.ch, '/', z.zn);
readln
end.
Объяснение кода листинга программы
- Создаём тип данных
natur, который представляет натуральное число из диапазона integer. - Создаём тип данных
drob, который представляет дроби с двумя числами: числитель (ch) и знаменатель (zn). - Определяем функцию
NOD, которая вычисляет наибольший общий делитель двух чисел. - Объявляем переменные
z,xиyтипаdrob, а такжеa,b,cиdтипаnatur. - В цикле повторяем, пока не будут введены корректные числа.
- Задаем значения числителей и знаменателей для переменных
x,yиz. - Вызываем процедуру
SumDrob, передавая в неё переменныеx,yиz. - Выводим результат на экран.
- Ждем ввода пользователя.