Мое значение массива c ++ не хочет меняться, оно выводит бесконечный цикл - PullRequest
0 голосов
/ 08 мая 2019

Обычно, если строка [num] равна '>', она должна добавить 1 к num, чтобы перейти к следующему символу массива, и должна вывести соответствующий символ, но вместо этого она бесконечно выводит знак '>'.Почему?

//part of the code
line[] = {'>', '>', '#'};
circuit = line[num];
    while(true)
    {
        if(circuit == '>')
        {
            num++; //add 1 to num
            cout << circuit;

        } else if(circuit == '<')
        {
            num--; //substract 1 to num
            cout << circuit;

        } else if(circuit == '#')
        {
            break;
        }

также число равно 0.

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Вы объявляете circuit = line[num];, а затем обновляете num, но не меняете значение схемы, которое уже определено. В ваших заявлениях if вы можете сделать circuit = line[num++];, сделать

num++;
circuit = curcuit[num]

Или оставьте то, что у вас есть, и поместите curcuit = curcuit [num] в самый верх вашего цикла while до того, как будет выполнено любое из условий.

`

0 голосов
/ 08 мая 2019

В вашем цикле вы никогда не обновите circuit. Так что он будет всегда цикл с одним и тем же символом и выполнит одну и ту же ветку if!

Непонятно, если num где-то инициализируется. Кроме того, неясно, как вы найдете конец вашего массива.

Так что лучше сделайте строку string и рассмотрите цикл вроде:

for (int i=0; num<line.size(); i++) {
    circuit=line[i];
    ...
}

И, пожалуйста, не возвращайтесь назад в индексе: так что я для изучения символов и num для суммы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...