0

うん。だから、私は推測ゲームのコードを作ろうとしています。このゲームには、ハードモードがあります。ハードモードでは、15の推測があり、1から500の間で推測する必要があります。しかし、私の問題はこれです。ハードモードで勝ち/負けを保存して表示しようとしていますが、wins.txtの内容が出力されます。次のような出力があります。

Wins: 0x7fffee26df78
Losses: 0x7fffee26e178

それは本当に私を混乱させます。これが私がそのために持っているコードの一部です:

ifstream losses_var("losses.txt");
ifstream wins_var("wins.txt");
losses_var>> loss;
wins_var>> win;
wins_var.close();
losses_var.close();

次に、次のように呼び出されます。

cout<<"Wins: "<< wins <<"\nLosses: "<< losses <<"\n"

完全なソースコードを見たい場合は、ここにあります:http: //pastebin.com/gPT37uBJ

私の2番目の問題:勝ったときにハードモードが表示されない。それはほとんど全体の問題です。私のコードでは、ユーザーに入力の使用を求めるループwhile(guess!= randNum)ですから、最後の括弧には、ユーザーが勝ったときにコードに表示したいものがありますが、実行されません。止まるだけです。誰かがこれを手伝ってくれたらいいのにと思います。バグのある行は97行目から105行目です。ここでも、ソースコードは次のとおりです:http://pastebin.com/gPT37uBJ

4

3 に答える 3

1

変数名が混乱しています

cout<<"Wins: "<< wins <<"\nLosses: "<< losses <<"\n";

する必要があります

cout<<"Wins: "<< win <<"\nLosses: "<< loss <<"\n";

適切な変数名を選択することが重要です。理由の1つは、変数の意味について混乱しないようにするためです(混乱した場合は、コードを見ている他の人にとってどのようになるかを考えてください)。

于 2012-11-23T10:45:15.543 に答える
0

あなたはあなたの変数winlossに書いていませんcout。貼り付けたコードから、winsそれlossesがオフストリームオブジェクトであることがわかります。つまり、おそらくそこにアドレスが表示されているということです。このような間違いを見つけにくいように、より有益な変数名を選択することをお勧めします。

于 2012-11-23T10:46:28.910 に答える
0

他の人はすでに出力の問題に答えています(winwins)。もう1つの問題は、おそらくwhileループの入れ子のロジックにあります。外側のループ(while (guess != randNum))が始まりますが、その本体には内側のループ(while (guesses_left != 0))全体が含まれています。これは、内側のループが終了するまで外側の条件が再度チェックされないことを意味します。つまり、推測が不足していることを意味します。また、正しく推測すると、内部ループが終了することはありません。あなたはおそらくこのようなものが欲しいでしょう:

while (guesses_left > 0) {
  // input user's guess
  if (guess < randNum) {
    // process it
  } else if (guess > randNum) {
    // process it
  } else {
    // it's equal, user won
    // do what's necessary for a win
    return 0;
  }
}
// ran out of guesses
// do what's necessary for a loss
return 0;
于 2012-11-23T11:09:18.260 に答える