Как разделить одно целое число на другое так, чтобы получить частное (действительное число), имеющее столько точных цифр после запятой, сколько мы хотим? Операция деления действительных чисел (ее знак /) в данном случае нас не устраивает, поскольку ее результат оказывается приближенным. Хорошенько подумав, нетрудно найти выход: получив очередную цифру частного, стоящую после запятой, сразу печатаем ее. Цифры частного мы получаем тем же способом, что и при делениии столбиком: остаток умножаем на 10, а затем делим на делитель.
Program delenie;
uses crt;
var a, {делимое}
b, {делитель}
n, {число точных цифр после запятой}
i: integer;
begin
writeln('Введите делимое: ');
read(a);
write('Введите делитель: ');
read(b);
write('Введите число точных цифр после запятой: ');
read(n);
write(a, ' : ', b:1, '=');
if (a<0)<>(b<0) then {числа имеют разные знаки}
write('-');
a:=abs(a); b:=abs(b);
write(a div b:1, '.');
for i:=1 to n do
begin
a:=(a mod b)*10;
write(a div b:1)
end;
readkey
end.
При a=22, b=7, c=20 ЭВМ напечатала
$$22:7=3.14285714285714285714.$$