2013-11-14 55 views
0

我收到一個錯誤,提示猜測沒有在main中定義。這是怎麼回事? 編是爲了猜測遊戲猜測遊戲提示詢問太多次

雖然只是因爲在main中定義的猜測而停止,但這使得計算機詢問未經測試的輸入。

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

int nextGuess(); 

int main() 
{ 
    srand(time(0)); 
    int number = rand() % 100 + 1; 

    cout <<" --GUESSING GAME-- \n You are to enter numbers, trying to guess rthe computer's number"<< endl; 

int guess = nextGuess(); 
    do 
    {  
    int guess = nextGuess(); 

    if (guess > number) 
     cout <<"Your guess is to high."<< endl; 

    if (guess < number) 
     cout <<"Your guess is too low."<< endl; 

    if (guess == number) 
     cout <<"Good job, that's the number!"<< endl; 
    } 
    while (guess != number); 

    system("pause"); 

} 

int nextGuess() 
{ 
    int guess = 0; 
    cout <<"Please enter a number:"; 
    cin >> guess; 

    return guess; 
} 

** Id粘貼c提示符,但不會複製。

+0

Aaaargh ... http://stackoverflow.com/questions/1107705/systempause-why-is-it-wrong – leemes

回答

1

您打電話nextGuess兩次,並在do-while區塊內重新聲明變量guess。更改類似於:

int guess; 
do 
{  
guess = nextGuess(); 

if (guess > number) 
    cout <<"Your guess is to high."<< endl; 

if (guess < number) 
    cout <<"Your guess is too low."<< endl; 

if (guess == number) 
    cout <<"Good job, that's the number!"<< endl; 
} 
while (guess != number); 
+0

我認爲這是錯誤的在第一,但我想它;有用! Thx <3 – matttm

0

使用while{}代替do{}while

int guess = nextGuess(); 
while (guess != number) 
{  
guess = nextGuess(); 

if (guess > number) 
    cout <<"Your guess is to high."<< endl; 

if (guess < number) 
    cout <<"Your guess is too low."<< endl; 

if (guess == number) 
    cout <<"Good job, that's the number!"<< endl; 
} 
1

你調用nextGuess兩次:一次之前環路,而一旦循環中。刪除第一個呼叫,即循環前的呼叫,但保留變量guess的聲明以外的循環,並且不要再次在循環內聲明它。

1

在你的while循環中,你正在重新定義變量猜測。它可能改變這樣的事情:

int guess; 
do 
{  
    guess = nextGuess(); 

你現在寫的方式,在循環使用的變量猜測是不是在while條件中使用相同的變量。

0

這是因爲您要撥打nextGuess兩次。在循環外部聲明變量就足夠了,然後調用它裏面的函數。

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

int nextGuess(); 

int main() 
{ 
    srand(time(0)); 
    int number = rand() % 100 + 1; 

    cout <<" --GUESSING GAME-- \n You are to enter numbers, trying to guess rthe computer's number"<< endl; 

    int guess; 

    do{ 
    guess = nextGuess(); 

    if (guess > number) 
     cout <<"Your guess is to high."<< endl; 

    if (guess < number) 
     cout <<"Your guess is too low."<< endl; 

    if (guess == number) 
     cout <<"Good job, that's the number!"<< endl; 
    } 
    while (guess != number); 

    return 0; 
} 
    int nextGuess() 
{ 
    int guess = 0; 
    cout <<"Please enter a number:"; 
    cin >> guess; 

    return guess; 
}