In this program we input a number. Our PC tries to guess this number.
After every try PC asks us:"Are your number more or less than?".
We input 'l' if our number is less, and input 'h' if our number is greater?
A range of possible values is created.
I think this code is bad. What do you think?
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int Random(int min, int max) {
return min + rand() % (max - min);
}
int main()
{
setlocale(LC_ALL, "rus");
int our_num;
srand(static_cast<unsigned int>(time(0)));
cout << "Input a positive number: " << endl;
cin >> our_num;
int t = 0; //number of attempts
int max = rand() + our_num; //maximum possible value
int min = 0; //minimum possible value
int d = Random(min, max);
do {
char lh;
cout << d << " Is this your number?(my number is greater: 'h'; less: 'l')" << endl;
cin >> lh;
++t;
if (lh == 'h') {
min = d;
d = Random(min, max);
}
else if (lh == 'l') {
max = d;
d = Random(min, max);
}
} while (d != our_num);
cout << "I guessed thus number with " << t << " attempts. " << "This number is " << d << endl;
return 0;
}
"rus"
locale would not be portable. You are probably better off setting the locale to""
and having the user specify their preferred locale in the environment. However, in this example, you’re doing all the output in English anyway. \$\endgroup\$