Пытаясь понять алгоритм маневрового двора - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь выполнить алгоритм Маневрового двора , поэтому я начал исследовать его.При этом я нашел интересную документацию, которую я не совсем понимаю:

    // Current token is a number, push 
    // it to stack for numbers. 
    else if(isdigit(tokens[i])){ 
        int val = 0; 

        // There may be more than one 
        // digits in number. 
        while(i < tokens.length() && 
                    isdigit(tokens[i])) 
        { 
            val = (val*10) + (tokens[i]-'0'); 
            i++; 
        } 

        values.push(val); 
    } 

Я не понимаю, почему внутри while переменная val умножается на 10 (val=(val*10)).Может кто-нибудь помочь мне понять, почему алгоритм должен это делать?

1 Ответ

0 голосов
/ 01 февраля 2019

Потому что иначе вы бы просто добавили цифры.Скажем, например, что вы хотите 123: вы получите 1, умножьте на 10, чтобы получить 10, добавьте 2, чтобы получить 12, умножьте на 10, чтобы получить 120, затем добавьте 3, чтобы получить 123.

Если вы пропустили умножение на 10, вместо этого вы получите 1 + 2 + 3 == 6.

...