2012-04-18 5 views
0

Не очень хорошо отлаживается, но я получаю несколько ошибок. Несколько ожидаемых '(' ')' и ';' Также «еще» без предыдущего «if», не соответствует «operator >>» в coutC++ несколько ошибок начинающего

Я знаю, что это легко, но все же пытаюсь получить мою ногу в дверь. Спасибо :)

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

int main() // guess number game 
{ 
    int x; 
    cout >> "Please enter a number\n"; 
    getline(cin x); 
    int y = rand(); 

    while x != y 
    { 

     if x < y; 
      cout >> "Go higher"; 
     else; 
      cout >> "Go lower"; 
    } 


} 
+0

Если это домашнее задание, пожалуйста, пометить его как таковой. –

+0

Ничего отладить здесь, так как все ваши проблемы кажутся синтаксическими ошибками. – Chad

+1

Это не homewok, и я не уверен, как исправить ошибки синтаксиса – Foxic

ответ

5
cout >> "Please enter a number\n"; 

Этот неверно, std::ostreams предоставляет только operator<< для вставки в формате d ата. Вместо этого используйте cout << "Please enter a number\n";.

getline(cin x); 

Во-первых, Вы пропускаете ,, так как getline нужно два или три аргумента. Но так как x - это integer, а не std::string, это все еще неправильно. Подумайте об этом - можете ли вы сохранить текстовую строку внутри целого? Вместо этого используйте cin >> x.

int y = rand(); 

Хотя это не кажется неправильным, существует логическая ошибка. rand() - генератор псевдослучайных чисел. Он использует начальное значение и некоторый алгоритм (a*m + b). Таким образом, вы должны указать начальное значение, также называемое семенем. Вы можете указать это, используя srand(). То же самое семя приведет к тому же порядку чисел, поэтому используйте что-то вроде srand(time(0)).

while x != y 
if x < y; 

Используйте скобки. И отбросьте дополнительный ;. Блуждающая точка с запятой ; в вашей программе напоминает пустое выражение.

EDIT: Работа Код:

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

int main(){ 
    int x; 
    int y; 
    srand(time(0)); 
    y = rand(); 
    std::cout << "Please enter a number: "; 
    do{ 
     if(std::cin >> x){ 
      if(x < y) 
       std::cout << "Go higher: "; 
      if(x > y) 
       std::cout << "Go lower: ";  
     } 
     else{ 
      // If the extraction fails, `std::cin` will evaluate to false 
      std::cout << "That wasn't a number, try again: "; 
      std::cin.clear(); // Clear the fail bits 
     } 
    }while(x != y); 
    std::cout << "Congratulations, you guessed my number :)"; 

    return 0; 
} 
+0

Большое вам спасибо, исправлено и многому научилось у вас – Foxic

+0

Добро пожаловать. Если вы используете 'g ++' для компиляции, тогда используйте' -Wall -Wextra' для получения дополнительных предупреждений - это поможет вам быстрее найти ваши ошибки. – Zeta

0

все, что вы указали выше, является синтаксическими ошибками. Это может быть легко исправлена ​​путем считывания на синтаксисе C++

http://www.cs.duke.edu/csed/tapestry/howtoa.pdf

он должен выглядеть следующим образом:

while (x != y) 
{ 

    if (x < y) 
     cout >> "Go higher"; 
    else 
     cout >> "Go lower"; 
    } 
+0

Cout должен использовать оператор «<<» вместо оператора «>>». –

+0

не планировал исправлять все ошибки, а только начинал с первых ударов. –

1

Попробуйте это:

void main() 
{ 
    int x; 
    cout << "Please enter a number\n"; 
    getline(cin, x); 
    int y = rand(); 

    while(x != y) 
    { 
    if(x < y) 
    cout << "Go higher"; 
    else 
    cout << "Go lower"; 
    } 
} 
+0

Что случилось с этим болтающимся еще? И с cout, который пытается отправить что-то в строку? –

+0

@PaoloBrandoli Опечатка. Исправлено. –

1

не слишком знакомы с C++, но я довольно уверен, что в то время как/если должен выглядеть примерно так

while (x != y) 
{ 

if (x < y) 
    cout << "Go higher"; 
else 
    cout << "Go lower"; 
} 

условий и если и в то время как петли должны быть вложены в круглые скобки.

+0

Cout должен использовать оператор «<<» вместо оператора «>>». –

+0

выглядит как менее знакомый, чем я думал, спасибо. –

0

Давайте посмотрим на все ошибки:

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

int main() // guess number game 
{ 
    int x; 
    cout >> "Please enter a number\n"; // should be `cout <<` cin uses >> 
    getline(cin x); // incorrect number of arguments should be 2 or 3 plus x is an int not string could use cin instead 
    int y = rand(); 

    while x != y // error condition checks should be parentheses like (x != y) 
    { 

     if x < y; // error condition should be parentheses also by adding a semicolon here you terminate the statement 
      cout >> "Go higher"; 
     else; // technically not an error but unintended code is executed cout >> "Go higher" is always executed because of the semi colon ; 
      cout >> "Go lower"; 
    } 

// no return of value, you declared main to return an int so you should 
} 

Попробуйте это:

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

int main() // guess number game 
{ 
    int x; 
    cout << "Please enter a number\n"; 
    cin >> x; 
    int y = rand(); 

    while (x != y) 
    { 

     if (x < y) 
      cout >> "Go higher"; 
     else 
      cout >> "Go lower"; 
    } 

    return 0; 
} 
+0

Cout должен использовать оператор «<<» вместо оператора «>>». –

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