// PascalABC.NET 3.2, сборка 1485 от 15.06.2017
// Внимание! Если программа не работает, обновите версию!
function GCD(a,b:integer):integer;
begin
while b<>0 do begin a:=a mod b; Swap(a,b) end;
Result:=a
end;
procedure TruncFrac(var a,b:integer);
begin
var z:=a*b<0?-1:1;<br> (a,b):=(Abs(a),Abs(b));
var k:=GCD(a,b);
(a,b):=((a div k)*z,b div k)
end;
procedure Print(a,b:integer);
begin
if b=1 then Write(a)
else begin
if Abs(a)>b then begin
Writeln(a div b,' ',Abs(a) mod b,'/',b)
end
else begin
if a<0 then begin Write('-'); a:=-a end;<br> Writeln(a,'/',b)
end
end
end;
begin
Write('Введите числитель и знаменатель дроби: ');
var (p,q):=ReadInteger2;
if p=0 then Writeln(0)
else if q=0 then Writeln('Знаменатель не может быть нулем')
else begin TruncFrac(p,q); Print(p,q) end
end.
Примеры
Введите числитель и знаменатель дроби: -156 70
-2 8/35
Введите числитель и знаменатель дроби: 1024 64
16
Введите числитель и знаменатель дроби: -158 42
-3 16/21
Введите числитель и знаменатель дроби: 356238 -3652
-97 997/1826
Введите числитель и знаменатель дроби: -150 -70
2 1/7
Введите числитель и знаменатель дроби: 12 0
Знаменатель не может быть нулем