Перевод из 10-ной системы счисления в восьмеричную - PascalABC.NET
Формулировка задачи:
Здравствуйте, у меня такая проблема, не могу написать корректный цикл для перевода системы исчисления с десятичной в восьмеричную.
Проблема в том что для маленьких чисел, выводит корректный перевод, но не для больших.
до этого использовал рекурсию, но она не подходит по условию задачи.
Листинг программы
- while n > 1 do
- begin
- write(n div 8);
- write(n mod 8);
- n:= n div 8;
- end;
Решение задачи: «Перевод из 10-ной системы счисления в восьмеричную»
textual
Листинг программы
- var n,n1,r:longint;
- begin
- readln(n);n1:=0;r:=1;
- while n > 0 do
- begin
- n1:=n1+(n mod 8)*r;
- r:=r*10;
- n:= n div 8;
- end;
- write(n1)
- end.
Объяснение кода листинга программы
- Объявлены три переменные: n, n1, r типа longint.
- Переменная n инициализируется значением, введенным пользователем.
- Переменная n1 инициализируется нулем.
- Переменная r инициализируется единицей.
- Запускается цикл while, который выполняется до тех пор, пока n больше нуля.
- Внутри цикла происходит вычисление значения n1: к текущему значению n1 прибавляется (n mod 8) умноженное на r.
- Значение r умножается на 10.
- Значение n делится на 8.
- После выхода из цикла while, значение n1 выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д