Перевод десятичного числа в системы счисления от [2;9]. Найдите ошибку - PascalABC.NET
Формулировка задачи:
Учусь писать программы. Написал и все проверил, но все равно ошибки найти не получилось в силу малых знаний.
Найдите пожалуйста ошибку, или может быть сама задумка так реализовать программу - бред?
Решение задачи: «Перевод десятичного числа в системы счисления от [2;9]. Найдите ошибку»
textual
Листинг программы
begin var n := Abs(ReadLnInteger('Введите натуральное число или 0 в десятичной СС: n =')); var o := ReadLnInteger('Введите основание СС от 2 до 9: o ='); if Not(o in [2..9]) then begin WriteLn('Ожидалось o от 1 до 9...'); Halt; end; var r := 0; var d := 1; var n0 := n; repeat r += d * (n mod o); n := n div o; d *= 10; until n = 0; WriteLnFormat('{0} (10) --> {1} ({2})', n0, r, o); end.
Объяснение кода листинга программы
- Ввод данных:
n
- абсолютное значение натурального числа или 0, введенного пользователем в десятичной системе счисления.o
- основание системы счисления, введенное пользователем.
- Проверка корректности введенных данных:
- Если
o
не принадлежит интервалу от 2 до 9, выводится сообщение об ошибке и программа завершается.
- Если
- Выполнение перевода числа в систему счисления:
- Переменная
r
инициализируется как 0. - Переменная
d
инициализируется как 1. - Переменная
n0
инициализируется какn
. - Пока
n
не равно 0, выполняется следующая последовательность действий: r
увеличивается наd
, умноженное на остаток от деленияn
наo
.n
делится наo
.d
умножается на 10.- Выводится результат перевода числа в систему счисления. Таким образом, код выполняет перевод десятичного числа в систему счисления от [2;9] и выводит результат в виде строки.
- Переменная
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д