Перевод десятичного числа в системы счисления от [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] и выводит результат в виде строки.
- Переменная