Ad

Nested 'while' Loop Not Looping Back To Outer 'for' Loop After Finishing (c++)

- 1 answer

I'm needing to find how much tax $ any given number of taxpayers have to pay over any number of years. At the beginning of the program, # of taxpayers is entered, and # of years is entered. The while loop executes fine, and does what it's supposed to do the first time; however, it never loops back to the 'for' loop & asks for the next taxpayer's income. (I will note I have to do it this way as it's for a class)

for (int i = 1; i <= taxpayers; i++)
{
  while (year <= years)
    {      
     cout << "\n\nPlease enter payer " << i << "'s income for year " << year << ": $";
        cin >> income;
        
         if (income >= 0)
         {
           .......
                         
          year++;
         }
         
         else
         {
         cout << "\n    *Error*"
         cin.clear();
         cin.ignore(INT_MAX, '\n');
         continue;
         }
    }
}
Ad

Answer

it never loops back to the 'for' loop & asks for the next taxpayer's income

That is because after the while loop is finished the 1st time through, year has caught up to years, and so on subsequent iterations of the for loop, year <= years is always false.

You need to reset year back to its starting value on each iteration of the for loop, before entering the while loop:

for (int i = 1; i <= taxpayers; i++)
{
    year = <your 1st year>; // <-- HERE
    while (year <= years)
    {      
        ...
    }
}
Ad
source: stackoverflow.com
Ad