Как бы вы объединили счетчик l oop с контролем флага l oop в c ++? - PullRequest
0 голосов
/ 02 апреля 2020

Я делаю игру с угадыванием чисел в c ++, и меня просят объединить счетчик l oop с контролируемым флагом l oop. Я использую генератор случайных чисел, и минимальное количество раз, которое пользователь может угадать, составляет 5 раз, после того, как пользователь угадал 5 раз, программа должна ответить числом, сгенерированным компьютером. Единственная проблема заключается в том, что я не смог успешно скомбинировать счетчик с флагом l oop, и при компиляции моя программа запрашивает использование только для предположения, и после 5-кратного повторения итераций она завершает l oop и не отвечает номером, сгенерированным компьютером. Я почти уверен, что это связано с тем, как я организовал счетчик, контролируемый l oop, но у меня возникают проблемы с его настройкой так, чтобы счетчик увеличивался в пределах контролируемого флагом l oop и предоставлял действительное утверждение для управляемый флагом l oop. Я попытался найти дополнительные примеры циклов l oop, управляемых флагом, и циклов, контролируемых счетчиком, поскольку я довольно новичок в этих концепциях, но не смог исправить свою программу. Вот часть моего кода:

while (!correct == (numGuesses < 5))
    {
        cout << "Guess the number the computer randomly picked between 1 - 100: ";
        cin >> guess;

        if (guess == number)
        {
            cout << "You guessed right, you win!" << endl << endl;
            correct = true;
        }
        else if (guess > number)
        {
        cout << "Sorry, your guess is too high" << endl;
        numGuesses += 1;
        }
        else if (guess < number)
        {
        cout << "Sorry, your guess is too low" << endl;
        numGuesses += 1;
        }
        else if (numGuesses == 5)
        {
            cout << "Sorry, you lost. The number is: " << number << endl << endl;
        }

    }

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Единственная проблема в том, что я не смог успешно объединить счетчик с флагом l oop

У вас есть два условия: counter < limit и correct == false .

Вы хотите продолжить l oop, пока оба условия выполняются.

У нас есть логические операторы для объединения логических (true / false) выражений вместе .

В этом случае вы хотите сказать X (верно) и Y (верно) (часть "верно" неявна в логических выражениях) , который пишется

X && Y

или в этом случае

(numGuesses < 5) && (!correct)
0 голосов
/ 02 апреля 2020

Прежде всего, я считаю, что ваше состояние в то время как -l oop должно быть !correct && (numGuesses < 5), поскольку в любом из этих случаев вы не должны продолжать.

Причина, по которой вы не случайно сгенерированное число, напечатанное после 5 неверных догадок, означает, что вы используете else if. Поскольку всегда guess == number, guess > number или guess < number, вы никогда не вводите последний else if. Таким образом, измените последний else if, где вы проверяете, если numGuesses == 5, на простое if заявление, и все должно работать.

...