2017-09-17 13 views
1

私は1から100までの数字を無作為に選ぶ推測ゲームの解を見つけ出すプログラムをビルドしたいと思って、「jumping into C++」という本を読んでいます。数字が何であるかを推測し、彼らの推測が高い、低い、または正しかったかどうかを彼らに伝えます。 基本的には、次の乱数を予測したいと思っていますが、私は初心者なので、そうする方法を見つけられません。推測ゲームの解決策を見つけるC++プログラム

これは、ゲームを推測するコードです:

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

using namespace std; 

int x,y; 
int rand_range(int low, int high) 
{ 
    return rand() % (high - low) + low; 
} 

int main() 
{ 
    int seed = time(NULL); 
    srand(seed); 
    int y = rand_range(1, 100); 
    cout << "Program has picked a no. between 1 to 100... You just make a 
      guess....\n"; 
    cin >> x; 
    while(1) 
    { 
     if(x == y) 
     { 
      cout << "just right\n";return 0; 
     } 
     else if(x < y) 
     { 
     cout << "low\n";return 0; 
     } 
     else 
     { 
     cout << "high\n";return 0; 
     } 
    } 
} 

このプログラムは、ユーザが100に1の間の数を推測して、推測では、低高またはちょうど右であるかどうかをチェックするが、私はどのプログラムが必要ましょう上記の推測の問題を解き、ランダムな番号を推測する。正確に。 私は、次の擬似乱数を予測する方法が必要です。

+2

サンプル入力と出力をお願いします –

+0

正確には動作しないもの(必要なものと何を得るもの)を説明する必要があります。 – Drop

答えて

-2

コードを編集しました。コードを無限ループに入れていましたが、可能なすべてのケースについてループから抜け出したため、有効なポイントはありませんでした。代わりに、ユーザーが正しい入力を推測するとループが終了するはずです。

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

using namespace std; 

int x,y; 
int rand_range(int low, int high) 
{ 
    return rand() % (high - low) + low; 
} 

int main() 
{ 
    int seed = time(NULL); 
    srand(seed); 
    int y = rand_range(1, 100); 
    cout << "Program has picked a no. between 1 to 100... " 
     << "You just make a guess....\n"; 
    cin >> x; 
    while(x != y) { 
     if(x < y) 
      cout << "low\n"; 

     else 
      cout << "high\n"; 

     cin >> x; 
    } 

    cout << "just right\n"; 
    return 0; 

} 
+1

これはどのように動作すると思われますか?あなたは入力を1回だけ取っています。数字がyと一致しない場合、プログラムは無限の時間 "ハイ"または "ロー"を続けて印刷します。 –

+1

申し訳ありませんが、私はそれを逃しました。 whileループを修正し、コマンドラインから引数を取り込むようにしました。 –

1

コードには基本的な誤りがあります。まず、ループ内で入力を行う必要があります。第二に、あなたはすべての条件に戻ります。そのため、あなたのコードはターゲットを1回だけ一致させようとしています。そして、数字を推測しようとするので、ループで入力する必要があります。そのためには、毎回入力を取らなければなりません。あなたのコードを少し編集しました。以下のコードを確認してください -

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

using namespace std; 

int x,y; 
int rand_range(int low, int high) 
{ 
    return rand() % (high - low) + low; 
} 

int main() 
{ 
    int seed = time(NULL); 
    srand(seed); 
    int y = rand_range(1, 100); 
    cout << "Program has picked a no. between 1 to 100... You just make a guess....\n"; 

    while(1) 
    { 
    cin >> x; // Now taking input in the loop 
     if(x == y) 
     { 
      cout << "just right\n";return 0; 
     } 
     else if(x < y) 
     { 
     cout << "low\n"; //omitted the return line 
     } 
     else 
     { 
     cout << "high\n"; // omitted the return line 
     } 
    } 
} 

あなたは決定論的なアルゴリズムを想定する必要が次の擬似乱数を推測します。それは初心者にとってはあまりにも難しい質問や方法のためには広すぎる。 Is it possible to predict the next number in a number generator?

関連する問題