Как отобразить попытки угадать число

#c

#c

Вопрос:

Я новичок в C . Мне нужно написать программу на C для создания случайного числа в диапазоне (0-10), а затем попросить пользователя угадать это число.У пользователя есть только 3 попытки. В случае, если пользователь угадал неправильный номер в первых 2 попытках, выведите «ПОПРОБУЙТЕ ЕЩЕ РАЗ …». В случае, если пользователь сделал это правильно с первой, второй или третьей попытки, выведите «ВЫ ВЫИГРАЛИ», в противном случае выведите «ВЫ ПРОИГРАЛИ».

Вывод должен быть примерно таким:

Созданное число равно: 6.

Попытка номер 1:

Угадайте число: 2.

Попробуйте еще раз!

Попытка номер 2:

Угадайте число: 6.

Вы выиграли!

Вот мой код. Кажется, что-то не так!

 #include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;

int main()

{
    int guess, num;
    srand(time(0));

    for (int i = 0; i <= 3; i  ) {
        num = (rand() % 10)   1;
        cout << num << endl;
        do
        {
            cout << "Enter a number between 1 and 10: ";
            cin >> guess;

            if (guess == num) {
                cout << "YOU WIN!nn";
                break;
            }
            else if (guess != num) {
                cout << "Try again!" << endl;
                break;
            }
            else
                cout << "YOU LOSE!" << endl;
        }

        while (guess != num);

        return 0;
    }
}
  

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

1. И вопрос в том?

2. Кажется, в коде что-то не так!

3. Не могли бы вы уточнить свой вопрос с указанием вашей точной проблемы и ошибки? В противном случае люди не смогут вам помочь

Ответ №1:

У вас есть два цикла, когда вам действительно нужен только один. Также вы return 0; находитесь не в том месте. Также ваше You lose! утверждение не может быть достигнуто, поскольку if / else if охватывают все ветви.

Вы можете несколько упростить это:

 #include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;

int main()
{
    int guess, num;
    srand(time(0));
    num = (rand() % 10)   1;
    cout << "number is: " << num << endl;

    constexpr int max_tries = 3;
    for (int i = 0; i < max_tries;)
    {
        cout << "Enter a number between 1 and 10: ";
        cin >> guess;
        cout << guess << std::endl;

        if (guess == num)
        {
            cout << "YOU WIN!nn";
            return 0;
        }
        else if (  i < max_tries amp;amp; guess != num)
        {
            cout << "Wrong - try again!" << endl;
        }               
    }
    cout << "Wrong - YOU LOSE!" << endl;
    return 1;
}
  

Здесь вы выполняете цикл 3 раза. Если они получают правильный ответ, то тут же return 0; выходят из программы (и говорят, что вы выиграли). В противном случае вы выполняете цикл 3 раза — если они не выиграли к концу трех циклов, вы добираетесь до конца программы и печатаете «вы проиграли» и return 1;

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

1. @AzharYoussef слегка изменил приведенный ниже ответ в соответствии с вашим запросом — он был удален, потому что вы опубликовали его в качестве ответа: o … но это действительно должны быть простые логические настройки, которые вы можете попробовать самостоятельно 🙂