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

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

  1. Ввод данных:
    • n - абсолютное значение натурального числа или 0, введенного пользователем в десятичной системе счисления.
    • o - основание системы счисления, введенное пользователем.
  2. Проверка корректности введенных данных:
    • Если o не принадлежит интервалу от 2 до 9, выводится сообщение об ошибке и программа завершается.
  3. Выполнение перевода числа в систему счисления:
    • Переменная r инициализируется как 0.
    • Переменная d инициализируется как 1.
    • Переменная n0 инициализируется как n.
    • Пока n не равно 0, выполняется следующая последовательность действий:
    • r увеличивается на d, умноженное на остаток от деления n на o.
    • n делится на o.
    • d умножается на 10.
    • Выводится результат перевода числа в систему счисления. Таким образом, код выполняет перевод десятичного числа в систему счисления от [2;9] и выводит результат в виде строки.

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

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