cadavid4j
cadavid4j

Reputation: 171

Iterator inside of loop will not increment

I'm attempting to compare two string arrays. Whenever I get to the while loop inside of the if statement, I get stuck in an infinite loop because even though I have an iterator inside of the loop, it doesn't increment. I have the cout<< finder; in the loop just to see what finder is at, and it never increments above zero. If anyone could help I'd really appreciate it.

if (memory[p] == "J")
    {
        if (is_number(memory[p+1]))
        {
            worker = atoi(memory[p+1].c_str());
            p = worker;
            continue;
        }
        else
        {
            int finder = 0;
            while (memory[p+1] != Symtablelab[finder])
            {
                cout << finder;
                finder = finder + 1;
            }

            if (memory[p+1] == Symtablelab[finder])
            {
                int k = Symtablepos[finder];
                worker = atoi(memory[k].c_str());

                p = worker;
                continue;
            }
        }
    }

Upvotes: 0

Views: 726

Answers (2)

xshoppyx
xshoppyx

Reputation: 1474

If it is continuously printing finder and it is 0, then I must ask if this whole code snippet you posted is enclosed in a while statement that you did not post. It makes absolutely no sense that the while loop included in the statement you posted would not be incrementing finder if it is the loop that gets stuck in an infinite loop.

Or the other possibility is that Symtablelab has overriden the '[' ']' operators. If neither of these things are true, that something incredibly wonky is going on.

Upvotes: 1

jerrymouse
jerrymouse

Reputation: 17802

You said finder never increments above zero. Does it print finder = 0 at all? If it does, it means

memory[p+1] = Symtablelab[1]

just after 1st iteration, so the while loop gets terminated and finder sticks at 1.

EDIT If you say, it prints finder = 0 continuously inside the while statement, then probably you have if (memory[p] == "J") inside an outer for or while (looping) statement.

Upvotes: 2

Related Questions