Home > Net >  Can't find the problem with my number guessing game. (C)
Can't find the problem with my number guessing game. (C)

Time:04-25

I have managed to create a game that tries to guess what the user is thinking about, but the problem is that the number guessed is stored into l_guess or h_guess depending on the condition met, how can I store it into a third variable that would be the new guess used on the next guess? My question might not be clear, but I hope looking at the code will help.

// Assignment #7
// This program guesses the number that you have picked.

#include <stdio.h>
#define UPPER 100
#define first_Guess 50
char answer;
int h_Guess;
int l_Guess;
int new_Guess;
void game_Start();
void game_Play();

int main(void)
{
 h_Guess = (first_Guess   UPPER) / 2;
 l_Guess = first_Guess;
 game_Start();
 game_Play();
 return 0;
}

void game_Start()
{
 printf("Hello, and welcome to the guessing game\n Think of a number between 0 and 100 and I will try to guess it.\n");
 printf("... Is it %d ?", first_Guess);
 printf("If the answer is correct, press (c) \n If your number is higher, press (h)\n if your number is lower, press (l)\n");
 scanf("%c", &answer);
}

void game_Play()
{

 while (answer != 'c')
 {
  if (answer == 'h')
  {

   printf("Then ... is it %d?\n", h_Guess);
   h_Guess = (h_Guess   UPPER) / 2;
  }
  else if (answer == 'l')
  {
   l_Guess = l_Guess / 2;
   printf("Then ... is it %d?\n", l_Guess);
  }
  scanf("%c", &answer);
 }
 printf(" I knew it, I am a genius\n");
}

CodePudding user response:

You're not properly re-setting the boundaries of your guesses.

void game_Play()
{
    int upper = MAX;
    int lower = MIN;
    int guess = FIRST_GUESS;

    while (answer != 'c')
    {
        if (answer == 'h')
        {
            lower = guess;
        }
        else if (answer == 'l')
        {
            upper = guess;
        }
        guess = (upper   lower) / 2;
        printf("Then is it %d?\n", guess);
        scanf(" %c", &answer);
    }
    printf(" I knew it. I am a genius.\n");
}

Note: with your constants defined as they are, there is an edge-case error in my solution. Can you find it, and fix it?

  •  Tags:  
  • c
  • Related