игра в угадайку, пока цикл не зацикливается

#c #while-loop

Вопрос:

 #include <iostream>
using namespace std;

bool play_game(int n) {
    int guess;
    bool noguesses = false;
    int numofguesses = 0;
    cout << "Welcome to my number guessing gamen";
    while (n!=guess amp;amp; !noguesses)
    {
        if (numofguesses < 6)
        {
            cout << "n";
            cout << "Enter your guess: ";
            cin >> guess;
            cout << "n";
            cout << "You entered: " << guess;
            numofguesses  ;
            return false;
        }
        else
        {
            oog = true;
        }
    }
    if (noguesses) {
        cout << "I'm sorry. You didn't find my number.n";
        cout << "It was" << n << endl;
    }
    else
    {
        cout << "n";
        cout << "You found it in" << numofguesses << "guess(es)n";
        return true;
    }
}

int main()
{
    int secretnum = 5;
    play_game(secretnum);
}
 

Когда я запускаю это, программа останавливается после cout << "You entered: " << guess; . Я хочу, чтобы он продолжал зацикливаться до тех пор, пока количество догадок не достигнет 6 или пока пользователь не введет правильный ответ.

Комментарии:

1. Функция завершается, потому что вы возвращаетесь из нее. return false; Если ты не хочешь, чтобы это закончилось, не возвращайся.

2. Также oog не имеет ссылки.

3. … и guess изначально неопределенна при первой оценке n != guess в состоянии цикла while и, следовательно, вызывает неопределенное поведение .

Ответ №1:

Удалять return false;

 if (numofguesses < 6)
{
    cout << "n";
    cout << "Enter your guess: ";
    cin >> guess;
    cout << "n";
    cout << "You entered: " << guess;
    numofguesses  ;
    return false;  //Remove this line
}