Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

AHДРЕЙ МЕДВЕДЕВ Мастер (1418), закрыт 8 месяцев назад
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.

Что здесь не так?
Лучший ответ
Андрей Высший разум (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 лет назад
Да нам-то откуда знать? Мало ли что ты хотел запрограммировать. Если компилятор не ругается, программа запускается, то все норм.
Jurijus Zaksas Искусственный Интеллект (420433) 5 лет назад
Длиннющий линейный код вместо строковой константы.
Вместо вычислений выводится литерал.
Юрий Моисеев Оракул (83938) 5 лет назад
Должно быть s:char; и одного end; не хватает
ЛесникМыслитель (6130) 5 лет назад
Ага, значит write ('r:=r+c*k; k:=k*Os; l:=l-1'); это отлично?)
Юрий Моисеев Оракул (83938) Я написал то, что заметил.
Лесник Мыслитель (6130) 5 лет назад
Что за бред ты написал? Идея похоже в переводе из шестнадцатеричной системы счисления в фиг знает что.
Код нечитабельный и не компилируемый однозначно
Похожие вопросы