Как менять предел числа в rand()?
Я изучаю C++, и заданием из учебника было написать программу Guess My Number, где компьютер пытается угадать заданное игроком число.
Мне нужно сделать так, чтобы компьютер менял диапазон числа, но когда я запускаю код и ввожу число, то ничего не происходит.
Я попробовал сделать предел переменной и менять ее значение каждый раз когда она оказывается больше или меньше введенного числа.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(static_cast<unsigned int>(time(0)));
int maximum = 100;
int randomNumber;
int tries = 0;
int userInput;
cout<<"welcome to the number guessing game\n";
cout<<"enter a number: ";
cin>>userInput;
do
{
randomNumber = rand() % maximum + 1;
tries++;
if (randomNumber > userInput)
{
tries++;
maximum = randomNumber - 1;
}
else if (randomNumber < userInput)
{
tries++;
maximum = randomNumber + 1;
}
else
{
cout<<"robot guessed the num. ";
cout<<tries<<" try(ies)";
}
} while (userInput != randomNumber);
return 0;
}
Ответы (2 шт):
Автор решения: Olga
→ Ссылка
Так?
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand(static_cast<unsigned int>(time(0)));
int maximum = 100;
int randomNumber;
int tries = 0;
int userInput;
cout << "welcome to the number guessing game\n";
cout << "enter a number: ";
cin >> userInput;
while (userInput != randomNumber)
{
randomNumber = rand() % 100;
tries++;
cout << tries << " try(ies) ";
cout << "randomNumber " << randomNumber << endl;
}
return 0;
}
Автор решения: Harry
→ Ссылка
Сдается мне, что вы хотели вот это?
int main()
{
srand(static_cast<unsigned int>(time(0)));
int maximum = 100, minimum = 0;
int randomNumber;
int tries = 0;
int userInput;
cout<<"welcome to the number guessing game\n";
cout<<"enter a number [0 - " << maximum << "]: ";
cin>>userInput;
do
{
randomNumber = rand() % (maximum-minimum + 1) + minimum;
cout << "Try " << randomNumber << endl;
tries++;
if (randomNumber > userInput)
maximum = randomNumber - 1;
else if (randomNumber < userInput)
{
minimum = randomNumber + 1;
}
else
{
cout<<"robot guessed the num. ";
cout<<tries<<" try(ies)";
break;
}
} while (userInput != randomNumber);
}