Цикл не выполняется второй раз в цикле while - PullRequest
0 голосов
/ 05 марта 2012

Я только начинающий в C ++. Я пишу небольшую и простую программу, которая печатает серию целых чисел между двумя заданными пользователем целыми числами.

В конце программа перезапустит цикл while, если пользователь вернет 1, но когда это произойдет, программа больше не будет печатать серию чисел (цикл for не работает).

Вот исходный код:

int main(void)
{
    int num1, num2;
    int doContinue = 1;

    while (doContinue == 1)
    {
        cout << "Please enter two integers, the first being the smallest: ";

         do { //does everything in curly braces while the user inputs the numbers wrong...
                cin >> num1 >> num2;

                if (num1 > num2)
                    {
                        cout << "Your first number was bigger than the second.\nTry again!: ";
                    }

            } while (num1 > num2);//... but once it's not wrong, break out of this do loop

        //at this point the input has been checked, so we can proceed to print the series

        for(int num1; num1 <= num2; num1++)
            {   
                cout << num1 << " \n";
            }

        cout << "Would you like to compute another series of integers? 1=yes, anything else=no: ";
        cin >> doContinue;
    }

    return 0;
}

Ответы [ 3 ]

2 голосов
/ 05 марта 2012

Ваш код демонстрирует неопределенное поведение.

    for(int num1; num1 <= num2; num1++)
        {   
            cout << num1 << " \n";
        }

создает новое целое число с именем num1, не связанное с num1 вне цикла for. Вы не инициализируете значение num1, но продолжаете сравнивать его.

Удалите int num1 (то есть что-то вроде for(; num1 <= num2; num1++)) из цикла for и повторите попытку.

0 голосов
/ 05 марта 2012

изменить эту часть кода

for(int num1; num1 <= num2; num1++)
            {   
                cout << num1 << " \n";
            }

до

for( ; num1 <= num2; num1++)
            {   
                cout << num1 << " \n";
            }
0 голосов
/ 05 марта 2012

Попробуйте

for(int i = num1; i<= num2; i++)

вместо

for(int num1; num1 <= num2; num1++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...