C номер-угадывание++ - игры (компьютер пытается угадать выбранное количество пользователей)


В этой программе мы введем ряд. Наш компьютер пытается угадать это число.

После каждой попытке компьютер просит нас:"ваше число больше или меньше?".

Мы вводим 'я', если нас меньше, и вход 'ч', если нас больше?

Создан ряд возможных значений.

Я думаю, что этот код плохой. Что вы думаете?

#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;
}


Комментарии
2 ответа

Некоторые вещи стоят здесь:

13
ответ дан 4 марта 2018 в 06:03 Источник Поделиться

Некоторые соображения по опыту пользователей, а не стиль программирования:


cout << "Input a positive number: " << endl;
cin >> our_num;

Почему пользователь должен ввести свой номер перед компьютером начать гадать?? Это не игра в угадайку.


инт Макс = слчис() + our_num; //максимально возможное значение

должно быть максимальное количество может храниться в int (или дать выбор пользователю ("выбери число от __ до __"))


"Это ваш номер?(мое число больше: "з"; меньше: 'л')"

Я очень скучаю по вариант, когда догадка верна.


int Random(int min, int max) {
return min + rand() % (max - min);
}

Я думаю, что это хорошая идея, чтобы поставить некоторые изменчивости в догадках, вместо того, чтобы всегда отправляясь на скучной двоичный поиск.

3
ответ дан 5 марта 2018 в 09:03 Источник Поделиться