Как в паскале сократить дробь?
Дана обыкновенная дробь. Ее нужно сократить и вывести на экран, то есть найти наибольший общий делитель числителя и знаменателя. Как это сделать? Мне нужен метод, программу напишу сам.
Ну короче вот:
Var chisl, znam, a:integer;
Var chislX, znamX, aX:real;
begin
writeln('ведите числитель');
readln(chisl);
writeln('ведите знаменатель');
readln(znam);
a:=99999; //начало здесь
repeat
a:=a-1;
if (chisl mod a = 0) and (znam mod a = 0) then
begin
chislX:=chisl;
znamX:=znam;
aX:=a;
chislX:=chislX/aX;
znamX:=znamX/aX;
writeln('сокращаем на ', a);
writeln(chislX, '/', znamX);
end
else
until a = 2; //конец тут
end.
Перебираешь целые числа от 1 делители на цело отдельно числителя и знаменателя, потом сравниваешь ищешь одинаковые потом наибольшее из одинаковых. Так же как бы ты это делал на бумаге. Сначала проверяешь деление на цело большего на меньшее, может сразу сократится.