мой код правильный. любое число длиной в
n разрядов в
q-ричной системе счисления определяется как
An*q^(n-1) + A(n-1)*q^(n-2) + ... + A2*q^1 + A1*q^0 , где
An-цифра, стоящая в n-ном разряде.
насчет твоего кода:
Код:
for i:= Length(str) downto 0 do
до 1 а не до 0
Код:
f:= f + (ord(str[i])-ord('1'))*(Length(str)+1);
ord(str[i])-ord('1')=нужная цифра-1. значит, если стоит ноль, то он станет -1, а 1 станет нулем.
Length(str)+1 - эт вообще не то, что надо.
если по этому коду перевести строку, то получится:
строка='135';
5: 4*4=16
+
3: 2*4=8
+
1: 0*4=0
24
то есть код совсем неправильный
2Karsh: избыточности много. такие вещи, как Ord('<символ>'), являются константами. значение length(s) используется 1 раз, присваивать значение функции, используемой меньше 2 раз, переменной - это дурной тон. а математические функции типа возведения в степень пишут на языке ассемблера. а функция val может препода не устраивать.