2016-11-20 3 views
-1

最近C++を学び始めて、最初の "ゲーム" /プログラムを作りたかったのです。私はいくつかの困難に遭遇しました。C++ - 私は最初のプログラムをコーディングしていますが、いくつかの問題に遭遇しました。

次のように私のエラーは今のところ、次のとおりです。

  1. (rand()%a) - >「」doesn'tを変更生成された番号が2であり、「」生成された番号がまま1である場合(たとえば、何かを2)。

  2. 次のコードは動作しません。

    while(!(b = c)){ 
        cout << "Enter your guess! \n"; 
        cin >> c; 
        if(c<b){ 
         cout << "Bigger! \n"; 
        } 
        if(c>b){ 
         cout << "Smaller! \n"; 
        } 
        d++; 
    } 
    

次のように私の完全なプログラムは次のとおりです。

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
using namespace std; 

int main() 
{ 
    // Max. Limit 
    int a; 
    // Random Number 
    int b; 
    // Guess 
    int c; 
    // Tries counter 
    int d = 0; 

    cout << "Enter highest possible number, setting the max. limit for the program. \n"; 
    cin >> a; 

    srand(time(0)); 
    b = 0 + (rand()%a); 

    if(b =! 1){ 
     c = 1; 
    } 
    if(b = 1){ 
     c = 2; 
    } 
    while(!(b = c)){ 
     cout << "Enter your guess! \n"; 
     cin >> c; 

     if(c<b){ 
      cout << "Bigger! \n"; 
     } 
     if(c>b){ 
      cout << "Smaller! \n"; 
     } 
     d++; 
    } 
    if(b=c){ 
     cout << "Congratulations! You have guessed was right! The number was indeed " << b << " !" << endl; 
     cout << "You needed " << d << " tries to find the number! \n"; 
    } 
    return 0; 
} 
+2

while(!(b = c)){'b = c '部分は比較ではなく代入です。 – drescherjm

+0

したがって、b = c – antlersoft

+0

の代わりにb == cを使用すると、 'b =! 'b!= c' – mike510a

答えて

3

さてさて、あなたは知っておく必要がある最初の事はすでにdrescherjmとして(あります指摘されている)、b = cはあなたがここで望むものではありません。代わりに、比較のためにb == cが必要です。 もう一つは、次のとおりです。

if(b =! 1){ 
     c = 1; 
    } 
    if(b = 1){ 
     c = 2; 
    } 

あなたのwhile-loopdo-while-loopに置き換えてbとは異なる値にcを初期化回避することができます。 using namespace std;も取り除き、rand()の代わりに<random>を使用する場合は、短い変数(ab)の名​​前を実際に行った名前に変更すると、コードはより明確で現代的になります。

#include <iostream> 
#include <random> 

int main() 
{ 
    int max_limit{ 0 }; 
    int random_number{ 0 }; 
    int guess{ 0 }; 
    int number_of_guesses{ 0 }; 

    std::cout << "Enter highest possible number, setting the max. limit for the program. \n"; 
    std::cin >> max_limit; 


    std::random_device now; 
    std::mt19937 engine(now()); //random seed 
    std::uniform_int_distribution<int> r(0, max_limit); //range 

    random_number = r(engine); 


    do{ 
     std::cout << "Enter your guess! \n"; 
     std::cin >> guess; 

     if (guess<random_number){ 
      std::cout << "Bigger! \n"; 
     } 
     if (guess>random_number){ 
      std::cout << "Smaller! \n"; 
     } 
     number_of_guesses++; 
    } while (random_number != guess); //do the code above until this is false 

    std::cout << "Congratulations! Your guess was right! The number was indeed " << random_number << " !" << std::endl; 
    std::cout << "You needed " << number_of_guesses << " tries to find the number! \n"; 

    return 0; 
} 

例を実行します。

Enter highest possible number, setting the max. limit for the program. 
100 
Enter your guess! 
50 
Smaller! 
Enter your guess! 
25 
Smaller! 
Enter your guess! 
10 
Bigger! 
Enter your guess! 
15 
Congratulations! Your guess was right! The number was indeed 15 ! 
You needed 4 tries to find the number! 

をそうそう、それが働いています。

+2

バイナリサーチによる最適推測の功績。 –

0
a = b

b a == bの値は、両方の変数のデ値を比較a割り当てます。 最初の問題については、シードについて確認してください。

関連する問題