Var a:string; i,a1,ar:integer;b:real; begin readln(a); b:=0; for i:=1 to length(a) do begin val(a[length(a)-i+1],a1,ar); b:=b+a1*exp((i-1)*ln(2)); end; writeln('b=',b); end.
А можно вариант по-проще? без "length" и "val"
Цикл замените на while a<>0 a1=a mod 10 После чего необходимо с помощью div отбросить последнюю цифру. Счетчик i лучше просто увеличивать с помощью inc внутри цикла, формула для вычисления прежняя.