Написать процедуру, которая складывает два рациональных числа - 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
. - Выводим результат на экран.
- Ждем ввода пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д