Написать процедуру, которая складывает два рациональных числа - Turbo Pascal

Формулировка задачи:

2) Для комбинированного типа
type
 drob=record
   ch:integer;
   zn:1..maxint
 end;
var
 massiv=array[q..20] of drob;
написать процедуру p(c,a:drob; var b:drob), которая складывает рациональные числа a и b и присваивает их сумму рациональному параметру с.

Код к задаче: «Написать процедуру, которая складывает два рациональных числа - Turbo Pascal»

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.

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

5   голосов, оценка 4.400 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы