Coffee Mug
Coffee Mug

Reputation: 47

Loop terminates because of condition, but the condition is necessary?

I'm working on a program that is a guessing game.

The problem is I have to set remainingguesses to 0 so that the amount of guesses a person can make decreases by 1. But at the same time the condition set in the loop is based on the remainingguesses not being 0. Meaning once it is 0 the loop terminates and moves on.

I don't know how to solve this while making the condition in the loop work properly.

Here's the loop in question:

 printf( "Type the number of guesses that player 2 gets and press return: \n");
  scanf("%d",&guesses);

  remainingguesses = 0;

  while (remainingguesses != 0) {
    printf("Player 2: Type your guess and press return (guesses remaining:%d):\n",remainingguesses);
    scanf(" %d",&secretnumberguess);
    remainingguesses = guesses - 1;

    if (secretnumberguess > secretnumber) {
      printf("Your guess was greater than the secret number.\n");
    }

    else if (secretnumberguess < secretnumber){
      printf("Your guess was less than the secret number.\n");
    }

    else{
          printf("Your guess was equal to the secret number. You win!\n");
    }
  }

  if (remainingguesses == 0)
    printf("Sorry you are out of guesses. You lose.\n");

Here's the full code in question if needed:

#include <stdio.h>

int main()
{

  int secretnumber;
  int guesses;
  int secretnumberguess;
  int remainingguesses;

  while (1)  {
    printf("Player 1: Type a number between 0 and 99 and press return:\n");
    scanf(" %d",&secretnumber);

    if (secretnumber > 99 || secretnumber < 0) {
      printf("Secret number cannot be greater than 99 or below 0.\n");
      continue;
    }
    break;
  }

  printf( "Type the number of guesses that player 2 gets and press return: \n");
  scanf("%d",&guesses);

  remainingguesses = 0;

  while (remainingguesses != 0) {
    printf("Player 2: Type your guess and press return (guesses remaining:%d):\n",remainingguesses);
    scanf(" %d",&secretnumberguess);
    remainingguesses = guesses - 1;

    if (secretnumberguess > secretnumber) {
      printf("Your guess was greater than the secret number.\n");
    }

    else if (secretnumberguess < secretnumber){
      printf("Your guess was less than the secret number.\n");
    }

    else{
          printf("Your guess was equal to the secret number. You win!\n");
    }
  }

  if (remainingguesses == 0)
    printf("Sorry you are out of guesses. You lose.\n");

  return 0;

Upvotes: 1

Views: 72

Answers (2)

jophab
jophab

Reputation: 5509

Simplified code:

#include <stdio.h>

int main()
{

  int secretnumber;
  int guesses;
  int secretnumberguess;
  int flag=0;

  while (1)  {
    printf("Player 1: Type a number between 0 and 99 and press return:\n");
    scanf(" %d",&secretnumber);

    if (secretnumber > 99 || secretnumber < 0) {
      printf("Secret number cannot be greater than 99 or below 0.\n");
      continue;
    }
    break;
  }

  printf( "Type the number of guesses that player 2 gets and press return: \n");
  scanf("%d",&guesses);


  while (guesses > 0 && flag==0) {
    printf("Player 2: Type your guess and press return (guesses remaining:%d):\n",guesses);
    scanf(" %d",&secretnumberguess);
    guesses=guesses - 1;

    if (secretnumberguess > secretnumber) {
      printf("Your guess was greater than the secret number.\n");
    }

    else if (secretnumberguess < secretnumber){
      printf("Your guess was less than the secret number.\n");
    }

    else{
          printf("Your guess was equal to the secret number. You win!\n");
          flag=1;
    }
  }

  if (guesses == 0 && flag==0)
    printf("Sorry you are out of guesses. You lose.\n");

  return 0;
}

Upvotes: 1

kalyanbk
kalyanbk

Reputation: 153

Here is probably a simple way of coding this.

read guesses;

while (guesses > 0) {
  read input;
  if (input == secret) {
    print "you win!!";
    return;
  }
  else {
    print "try again!";
  }
  guesses--;
}

print "Sorry! You are out of guesses";

Upvotes: 1

Related Questions