У меня в задаче выдает ответ с 0 (0008). задание: перевод из десятичной системы в восьмеричную в паскале, используя while. найдите ошибку. program zad3; var n, k: integer; begin read(n); while n > 0 do begin k := 64; write (n div k); write (n mod 8); n:=n div 8; n:= n mod k; k:=k div 8; end; end.
Можно вот так: program zad3; var n, k, m: integer; begin write('n = '); readln(n); k:=1; while k<=n do k:=k*8;<br>k:=k div 8; m:=n; while m > 7 do begin write (m div k); m:=m mod k; k:=k div 8; end; writeln(n mod 8); end. Пример: n = 125 175
Исправил некоторые строки, добавил массив. Вот что вышло. program zad3; var n,i,k: integer; mas :array [1..20] of integer; begin read(n); i:=1; while n > 0 do begin mas[i]:=n mod 8; n:=n div 8; i:=i+1; k:=k+1; end; for i:=k downto 1 do write(mas[i]) end.
а что такое массив?
Массив - это такая "полка", на которой стоят цифры. Каждое место на полке пронумеровано и на полку ты можешь положить любое число, а в будущем, указав номер полки, вывести это число. Не знаю как еще проще объяснить :)
в данной программе я объявил массив под идентификатором "mas", целых чисел, с индексами от 1 до 20. Вот эта строчка mas :array [1..20] of integer;
Потом в программе я на каждую полку начиная с 1, клал число, которое получалось в остатке от деления числа n на 8. Потом на вторую полку тоже самое, на третью и т.д. пока n больше 0.
Под конец я вывел эти числа в обратном порядке т.к. по правилам перевода систем счисления остаток записывается с конца
Без массива у тебя бы число получилось задом на перёд. Возможно, можно как-то сделать без него, я не задумывался