#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 … но это действительно должны быть простые логические настройки, которые вы можете попробовать самостоятельно 🙂