Перевод числа в факториальную систему счисления - Pascal ABC

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

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

перевод числа в факториальную систему счисления

Решение задачи: «Перевод числа в факториальную систему счисления»

textual
Листинг программы
program FactorialNumeralSystem;
 
  function DecToChar(n: qword): char;
  begin
    if n < 10 then
      DecToChar := char(n + Ord('0'))
    else
      DecToChar := char(n + Ord('A') - 10);
  end;
 
  function DecToFac(n: qword): string;
 
    procedure Recurse(i, f: qword);
    begin
      f := i * f;
      if n < f then
        exit;
      Recurse(i + 1, f);
      DecToFac := DecToFac + DecToChar(n div f);
      n := n mod f;
    end;
 
  begin
    DecToFac := '';
    Recurse(1, 1);
  end;
 
begin
  writeln('100 (dec) = ', DecToFac(100), ' (fac)');
  writeln('999999999999 (dec) = ', DecToFac(999999999999), ' (fac)');
end.

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

  1. В функции DecToChar определяется функция преобразования десятичного числа в символ, используя ASCII-коды. Если число меньше 10, то возвращается символ соответствующей цифры. В противном случае, возвращается символ, который представляет число, увеличенное на 10 и затем уменьшенное на 10.
  2. В функции DecToFac определена функция преобразования десятичного числа в строку, которая использует рекурсивный алгоритм. Рекурсивный вызов функции происходит для каждого числа, которое в два раза больше предыдущего, пока не будет достигнуто базовое условие, когда число становится равным 1.
  3. В начале программы создается пустая строка DecToFac, которая будет использоваться для хранения результата преобразования. Затем вызывается рекурсивный вызов функции Recurse с начальным значением 1 и 1 в качестве аргументов.
  4. В конце программы выводятся результаты преобразования для чисел 100 и 999999999999.

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

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