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

Узнай цену своей работы

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

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

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

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.

Объяснение кода листинга программы

  1. const a:string[9]='012345678'; - Создается строковая переменная a, содержащая цифры для систем счисления от 2 до 9.
  2. procedure FromDec(r:real;c,t:byte;var s:string); - Объявляется процедура FromDec, которая принимает вещественное число r, основание системы счисления c, количество знаков после точки t и переменную s, в которой будет храниться результат.
  3. var n:real; i:byte; - Объявляются переменные n для хранения промежуточных результатов и i для использования в цикле.
  4. s:='0.'; - Присваивается начальное значение '0.' переменной s.
  5. repeat n:=r*c; r:=frac(n); s:=s+a[trunc(n)+1]; inc(i); until i=t; - Повторяется операция умножения числа r на основание системы счисления, сохранение дробной части в r и добавление соответствующей цифры в строку s, пока не достигнута заданная точность t.
  6. var r:real; c,t:byte; s:string; - Объявляются переменные r для хранения вещественного числа, c для хранения основания системы счисления, t для хранения количества знаков после точки и s для хранения результата.
  7. FromDec(r,c,t,s); - Вызывается процедура FromDec для преобразования дробной части числа из 10-й системы счисления в выбранную.
  8. write('Число в СС ',c,'=',s); - Выводится результат преобразования в консоль.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.444 из 5
Похожие ответы