2015-10-14 2 views
0

Я завершаю свой школьный проект. Я написал все, но, кажется, есть ошибка:Отсутствует; перед идентификатором cout

missing ";" before cout at line 15 before " your number is bigger than..."

Я не могу понять эту ошибку или исправить ее. Пожалуйста помоги. Код для всей программы следующим образом:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int intSecretNum = 47; 
    int intGuess; 
    cout<< "Guess the secret number (between 0 and 100 inclusively): "; 
    cin>> intGuess; 
    while(intSecretNum != 47, intGuess<= 5) 
    { 
      if(intGuess < intSecretNum) 
       cout << "Your Number is smaller than the secret number"; 
      else (intGuess > intSecretNum) 
       cout << "Your Number is bigger than the secret number"; 
      intGuess++; 
      if(intGuess>5) 
       cout << "Sorry, you have used up all your quota (5 times)! The secret number is "<<intSecretNum; 
       cout << "program terminated." <<endl; 
    } 
    cout<< "You have used "<<intGuess <<"to guess te secret number which is " <<intSecretNum<<"."; 
    cout<<"program terminated."<<endl; 
    return 0; 
} 

Я довольно новыми для этого C++, пожалуйста, помогите

+5

'else (intGuess> intSecretNum)' -> 'else' не принимает условие' else if' does – Borgleader

+0

Есть и другие вещи: какая точка 'intSecretNum! = 47' в цикле while ? Что вы делаете, если ваш 'intguess == intSecretNum'? –

+0

Что вы хотите, когда угадаете, соответствует секретному номеру? –

ответ

1

Просто измените эту строку:

else (intGuess > intSecretNum) 

к

else if(intGuess > intSecretNum) 

В проблема в том, что вы не можете дать специальное условие только с ключевым словом else. Else используется для описания «в любом другом случае ...». Так что в вашем случае, так как это простой тест, который вы можете просто попытаться избавиться от состояния после еще и идти:

еще (intGuess> intSecretNum) к:

else 

Для удобочитаемости Я хотел бы также советы всегда окружают ваши инструкции с {} Таким образом, это даст вам:

while(intSecretNum != 47, intGuess<= 5) 
    { 
      if(intGuess < intSecretNum){ 
       cout << "Your Number is smaller than the secret number"; 
      } 
      else { 
       cout << "Your Number is bigger than the secret number"; 
      } 
      intGuess++; 
      if(intGuess>5) 
       cout << "Sorry, you have used up all your quota (5 times)! The secret number is "<<intSecretNum; 
       cout << "program terminated." <<endl; 
    } 

NB: Есть также некоторые вещи, которые не имеют смысл в вашем цикле. Но это может быть темой для другого вопроса

3

Вашей проблемы здесь

else (intGuess > intSecretNum) 
      cout << "Your Number is bigger than the secret number"; 

Это предполагает, что (intGuess > intSecretNum) этого заявление, которое будет выполняться при условии else, поэтому вы получите сообщение об ошибке Предупреждают отсутствующей точки с запятой.

Вместо этого вы должны иметь

else if(intGuess > intSecretNum) 
      cout << "Your Number is bigger than the secret number"; 
0

То, что вы, вероятно, имеете в виду:

while(intSecretNum != 47, intGuess<= 5) 
{ 
    if(intGuess < intSecretNum) 
     cout << "Your Number is smaller than the secret number"; 
    else if(intGuess > intSecretNum) 
     cout << "Your Number is bigger than the secret number"; 
    intGuess++; 
    if(intGuess>5) { 
     cout << "Sorry, you have used up all your quota (5 times)! The secret number is "<<intSecretNum; 
     cout << "program terminated." <<endl; 
    } 
} 

Обратите внимание на if после else. else не имеет такого состояния, как if. Также обратите внимание на скобки вокруг последних if -block. Без скобок только один оператор делает весь if -block. Если вам нужно больше, вам придется заключить блок в скобки.

Смежные вопросы