Перевод дробных чисел в разные системы счисления с заданной точностью - Pascal

Формулировка задачи:

Помогите, пожалуйста, составить программу с процедурой, которая переводит дробное положительное число (от 0 до 1) в систему счисления, основание которой (от 2 до 9) вводится с клавиатуры. Процесс должен прерываться, когда будет достигнута нужная точность (которая тоже вводится с клавиатуры).

Код к задаче: «Перевод дробных чисел в разные системы счисления с заданной точностью - Pascal»

textual
const a:string[9]='012345678'; {цифры в СС 2-9}
{процедура для перевода дробной части числа из 10-й в любую сс}
procedure FromDec(r:real;c,t:byte;var s:string);
var n:real;
    i:byte;
begin
s:='0.';
i:=0;
repeat
n:=r*c;
r:=frac(n); {умножаем число на основание СС берём целую часть и
             снова умножаем дробную}
s:=s+a[trunc(n)+1]; {ищим в строке элемент на позиции целой части +1}
inc(i); {увеличиваем счётчик}
until i=t;{достигли точности, конец}
end;
var r:real;
    c,t:byte;
    s:string;
begin
repeat
write('Введите вещественное число от 0<a<1 r=');
readln(r);
until(r>0)and(r<1);
repeat
write('Введите систему счисления от 2 до 9 c=');
readln(c);
until c in [2..9];
repeat
write('Введите точность(количество знаков после точки) от 1 до 10 t=');
readln(t);
until t in [1..10];
FromDec(r,c,t,s);
write('Число в СС ',c,'=',s);
end.

9   голосов, оценка 4.444 из 5


СОХРАНИТЬ ССЫЛКУ