0

私のコードの何が問題なのか誰にも教えてもらえますか? 入力した数字をコンピューターが推測するゲームを作成しようとしています。これが私のコードです:


#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main(void) {

int numberGuess = 0;
int low = 1;
int high = 100;
int computerGuess = 0;

printf("Enter a number, 1 - 100: ");
scanf("%d", &numberGuess);

while (computerGuess != numberGuess) 
{

  computerGuess = ((high - low) + low)/2;
  printf("%d ", computerGuess);

  if (numberGuess > computerGuess)
    {
    printf("Your guess was to low \n");
    low = computerGuess+1;
    }
  else if (numberGuess < computerGuess)
    {
    printf("Your guess was to high \n");
    high = computerGuess-1;
}
  else if (numberGuess == computerGuess)
{
printf("Yess!! you got it!\n");
    }
 }
return 0;
}
4

3 に答える 3

2

この行:

computerGuess = ((high - low) + low)/2;

次のようにする必要があります。

computerGuess = (high - low)/2+low;

あなたが探しているのは、高値と安値の中間にある数値です (これは二分探索ですが、ご存知だと思います)。

于 2013-03-04T19:39:25.730 に答える
0
computerGuess = ((high - low) + low)/2;

ここでは、lowを追加し、すぐにそれを減算して、コードを等しくします。

computerGuess = ((high)/2;

そして、whileループが終了することはないので、常に同じ値を比較します。

于 2013-03-04T19:38:23.893 に答える
0

修正コード:

#include <time.h>
#include<stdio.h>
#include <stdlib.h>

int main(void) {

int numberGuess = 0;
int low = 1;
int high = 100;
int computerGuess = 0;

printf("Enter a number, 1 - 100: ");
scanf("%d", &numberGuess);

while (computerGuess != numberGuess) 
{

  computerGuess = ((high - low)/2 + low);
  printf("%d ", computerGuess);

  if (numberGuess > computerGuess)
    {
    printf("Your guess was to low \n");
    low = computerGuess+1;
    }
  else if (numberGuess < computerGuess)
    {
    printf("Your guess was to high \n");
    high = computerGuess-1;
}
  else if (numberGuess == computerGuess)
{
printf("Yess!! you got it!\n");
    }
 }

return 0; 
}
于 2013-03-04T19:43:01.233 に答える