Андрей
Высший разум
(422110)
5 лет назад
1. Значения r, k, l внутри цикла НИКАК НЕ МЕНЯЮТСЯ. Вместо вычислений ты зачем-то выводишь строку.
2. Совершенно быссмысленный case. К тому же на вход case ты подаёшь строку, а не символ - синтаксическая ошибка.
Всё делается намного проще и многократно короче:
readln (s);
readln (os);
r := 0;
for i := 1 to length(s) do begin
r := r * os + ord(s[i]);
if s[i] in ['0'..'9'] then
dec(r, ord('0'))
else
dec(r, ord('A') - 10)
end;
writeln(r)
.
Оракул
(78177)
5 лет назад
Да нам-то откуда знать? Мало ли что ты хотел запрограммировать. Если компилятор не ругается, программа запускается, то все норм.
Лесник
Мыслитель
(6130)
5 лет назад
Что за бред ты написал? Идея похоже в переводе из шестнадцатеричной системы счисления в фиг знает что.
Код нечитабельный и не компилируемый однозначно
Begin
readln (s);
readln (Os);
k:=1;r:=0;
l:=length (s);
while l>0 do Begin
Case s of '0':c:=0;
'1':c:=1;
'2':c:=2;
'3':c:=3;
'4':c:=4;
'5':c:=5;
'6':c:=6;
'7':c:=7;
'8':c:=8;
'9':c:=9;
'A':c:=10;
'B':c:=11;
'C':c:=12;
'D':c:=13;
'E':c:=14;
'F':c:=15;
else write ('r:=r+c*k; k:=k*Os; l:=l-1');
end;
writeln(r);
end.
Что здесь не так?