PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018Внимание! Если программа не работает, обновите версию!procedure RedFrac(a,b:integer; var c,d:integer); // сокращение дробиfunction Gcd(a,b:integer):integer; // НОДbegin while b<>0 do begin a:=a mod b; Swap(a,b) end; Result:=aend;begin var sgnc:=Sign(a); // мы должны учитывать знак! var sgnd:=Sign(b); // мы должны учитывать знак! c:=Abs(a); d:=Abs(b); var g:=Gcd(c,d); c:=(c div g)*sgnc; d:=(d div g)*sgndend;begin var p,q,r,s:integer; Write('Введите числитель и знаменатель: '); Read(p,q); RedFrac(p,q,r,s); Writeln(p,' / ',q,' = ',r, ' / ',s)end.
ПримерВведите числитель и знаменатель: 384 4096384 / 4096 = 3 / 32