Показать сообщение отдельно
  #5  
Старый 27.10.2016, 19:14
Аватар для mrJo
mrJo mrJo вне форума
Прохожий
 
Регистрация: 22.10.2016
Сообщения: 3
Версия Delphi: Delphi 07
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
ну а если в общем понимаешь сам язык, зачем спрашиваешь?
Не проще просто почитать про сам алгоритм? Например тут: https://ru.wikipedia.org/wiki/%D0%9F... .D0.B8.D1.8E
сложно разобраться самому, на примере будет легче

Код:
function StrToIntM(s:string;M:word):int64;
возьмем для примера число 1010(2),
Код:
if i > Length(s) then // если после того как увеличили i, оно больше длины слова s, то...
первый i будет равен = 2 т.к.
Код:
do inc(i)
Length(s)=4
значит 2>4 это не правильно, поэтому цикл не запускаеться а значение резальт присваивается значение -1
Код:
else // иначе
Result:=-1; // резальт = -1
когда i будет равен 5, то запуститься цикл от единицы до 4
Код:
for i:=1 to length(s) do // то нужно выполнить цикл от единицы до кол-ва символов слова S
        case s[i] of // тут выясняется какие символы в слове S
        '0'..'9':Result:=Result*M + ord(s[i])-48; // тут выясняется какие символы в слове S
        'A'..'F':Result:=Result*M + ord(s[i])-55; // тут выясняется какие символы в слове S
        'a'..'f':Result:=Result*M + ord(s[i])-87; // тут выясняется какие символы в слове S
        end    //case
case = if
Код:
'0'..'9':Result:=Result*M + ord(s[i])-48; // тут выясняется какие символы в слове S
i=1
s[i]=1
ord(s[i])=1
резальт = 0*10(т.к. переводим в десятичную систему, или надо на 2? т.к. переводим из двоичной?)+(1-48)=-47
резальт = -47*10+(0-48)=-518
резальт = -518*10+(1-48)=-5227
резаль = -5227*10+(0-48)=-52318

какая-то фигня получается
Ответить с цитированием