samedi 12 septembre 2015

Trying to make a specific random number generator for a guessing game

As an exercise, I'm trying to make a program where the computer tries to guess which number I am thinking of. I am able to make it give random guesses in general but I want to make it able to guess the right number more quickly by recording it's highest and lowest guesses and making new guesses in-between those. Is this possible and if so what am I doing wrong?

int main()
{
    char yesOrNo;
    char lowOrHigh;
    srand(time(NULL));
    int random_number = 1+(rand() % 100);
    int lowestGuess(random_number);
    int highestGuess(random_number);
    int adjustMinMax(int random_number, int& highestGuess, int& lowestGuess);
    int adjustGuess(int& random_number, char lowOrHigh, int lowestGuess, int highestGuess);
    cout << "Think of a random number between 1 and 100 in your head.";
    cout << endl << "Is your number " << random_number << "?";
    cout << endl << "y/n: ";
    cin >> yesOrNo;
    while (yesOrNo == 'n' || yesOrNo == 'no')
    {
        cout << "Ok then :( " << endl;
        cout << "Was my guess too low or too high (l/h)? ";
        cin >> lowOrHigh;
        adjustGuess(random_number, lowOrHigh, lowestGuess, highestGuess);
        adjustMinMax(random_number, highestGuess, lowestGuess);
        cout << endl << "Is your number " << random_number << " ? ";
        cin >> yesOrNo;
    }

    cout << "Hooray! :)";

    return 0;
}

int adjustGuess(int& random_number, char lowOrHigh, int lowestGuess, int highestGuess)
{
    if (lowOrHigh == 'l')
    {
        random_number = ((lowestGuess+1) + rand() % 100);
    }

    if (lowOrHigh == 'h')
    {
        random_number = (lowestGuess+1)+rand() % (highestGuess-1);
    }

    return (random_number);
}
int adjustMinMax(int random_number, int& highestGuess, int& lowestGuess)
{
    if (random_number > highestGuess)
    {
        return(highestGuess = random_number);
    }

    if (random_number < lowestGuess)
    {
        return(lowestGuess = random_number);
    }
}




Aucun commentaire:

Enregistrer un commentaire