type fraction = object num, den:integer; constructor init; procedure reduction; end; FrRes =object(fraction) procedure print; end; constructor fraction.init; begin (*num:= 1; den := 1;*) read(num, den); end; procedure fraction.reduction; var a,b,nod:integer; begin a:=num; b:=den; while (a<>0) and (b<>0) do if a >= b then a := a mod b else b := b mod a; nod:=a+b; num:=num div nod; den:=den div nod; end; procedure FrRes.print; begin (*num:= 1; den := 1;*) write(num,' / ', den); end; var f1, f2:fraction; FRes:FrRes; begin f1.init; //читаем первую дробь f2.init; //читаем вторую дробь f1.reduction; //сокращаемь первую дробь f2.reduction; //сокращаемь вторую дробь {вычитание из одной дроби другую} FRes.reduction; //сокращаемь результирующую дробь FRes.print; //выводим на экран результат read; end.