Перевод из 10-ной системы счисления в восьмеричную - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, у меня такая проблема, не могу написать корректный цикл для перевода системы исчисления с десятичной в восьмеричную. Проблема в том что для маленьких чисел, выводит корректный перевод, но не для больших.
Листинг программы
  1. while n > 1 do
  2. begin
  3. write(n div 8);
  4. write(n mod 8);
  5. n:= n div 8;
  6. end;
до этого использовал рекурсию, но она не подходит по условию задачи.

Решение задачи: «Перевод из 10-ной системы счисления в восьмеричную»

textual
Листинг программы
  1. var n,n1,r:longint;
  2. begin
  3. readln(n);n1:=0;r:=1;
  4. while n > 0 do
  5.   begin
  6.     n1:=n1+(n mod 8)*r;
  7.     r:=r*10;
  8.     n:= n div 8;
  9.   end;
  10.   write(n1)
  11. end.

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

  1. Объявлены три переменные: n, n1, r типа longint.
  2. Переменная n инициализируется значением, введенным пользователем.
  3. Переменная n1 инициализируется нулем.
  4. Переменная r инициализируется единицей.
  5. Запускается цикл while, который выполняется до тех пор, пока n больше нуля.
  6. Внутри цикла происходит вычисление значения n1: к текущему значению n1 прибавляется (n mod 8) умноженное на r.
  7. Значение r умножается на 10.
  8. Значение n делится на 8.
  9. После выхода из цикла while, значение n1 выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы