А с чего вы взяли, что программа работает неправильно?
Подсчитаем:
2238=2*8^2+2*8^1+3*8^0=
2*64+2*8+3=
128+16+3=
14710
Что здесь вы видите неправильного?
19
10=23
8
Кстати, вот более короткая программа с меньшим числом переменных:
Код:
uses crt;
var a,b,c,d,x:integer;
begin
clrscr;
writeln('Enter Oct-value');
readln(x);
a:=x div 100;
x:=x mod 100;
b:=x div 10;
c:=x mod 10;
writeln(a:4,b:4,c:4);
d:=a*64+b*8+c;
writeln('d=',d);
readln
end.
Можно вообще реализовать в виде одной команды, будет всего 2 переменных в программе.