Top.Mail.Ru
Ответы

Помогите в Паскале!!

Var s:string; Os, k, r, l, c:integer;
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.

Что здесь не так?

По дате
По рейтингу
Аватар пользователя
Новичок
6лет

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)

Аватар пользователя
Мыслитель
6лет

Что за бред ты написал? Идея похоже в переводе из шестнадцатеричной системы счисления в фиг знает что.
Код нечитабельный и не компилируемый однозначно

Аватар пользователя
Оракул
6лет

Должно быть s:char; и одного end; не хватает

Аватар пользователя
Искусственный Интеллект
6лет

Длиннющий линейный код вместо строковой константы.
Вместо вычислений выводится литерал.

Аватар пользователя
Оракул
6лет

Да нам-то откуда знать? Мало ли что ты хотел запрограммировать. Если компилятор не ругается, программа запускается, то все норм.