Перевод числа в факториальную систему счисления - 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.
Объяснение кода листинга программы
- В функции DecToChar определяется функция преобразования десятичного числа в символ, используя ASCII-коды. Если число меньше 10, то возвращается символ соответствующей цифры. В противном случае, возвращается символ, который представляет число, увеличенное на 10 и затем уменьшенное на 10.
- В функции DecToFac определена функция преобразования десятичного числа в строку, которая использует рекурсивный алгоритм. Рекурсивный вызов функции происходит для каждого числа, которое в два раза больше предыдущего, пока не будет достигнуто базовое условие, когда число становится равным 1.
- В начале программы создается пустая строка DecToFac, которая будет использоваться для хранения результата преобразования. Затем вызывается рекурсивный вызов функции Recurse с начальным значением 1 и 1 в качестве аргументов.
- В конце программы выводятся результаты преобразования для чисел 100 и 999999999999.