2016-11-20 117 views
-1

我最近開始學習C++,想做我的第一個「遊戲」/程序。我遇到了一些困難。C++ - 我編寫我的第一個程序,但我遇到了一些麻煩

我的錯誤,至今如下:

  1. (rand()%a) - >改變「一」 doesn't做任何事情(例如,如果生成的數2和「a」是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

。 – drescherjm

+0

因此,使用b == c而不是b = c – antlersoft

+0

也有'b =! c'應該是'b!= c' – mike510a

回答

3

好吧,你需要知道的第一件事是(如drescherjm已經指出),b = c是不是你想要的。相反,你想要b == c作比較。 另一件事是:

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

你可以通過你的while-loopdo-while-loop更換避免初始化c爲不同的值比b。如果你同時也擺脫了using namespace std;並使用<random>而不是rand(),將你的短變量(a,b)重命名爲他們實際正在做的事情,你的代碼變得更清晰和更現代。

#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分配ab a == b的值相比較兩個變量的去值。 關於第一個問題,請查看種子。在'while(!(b = c)){'the'b = c`部分是一個賦值而不是比較的情況下'

相關問題