2012-04-18 154 views
0

不是很好的調試,但我收到一些錯誤。一些預期的'('')'和';' 也沒有以前的'如果',沒有匹配的'運營商>>'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

如果這是家庭作業,請將其標記爲此類。 – 2012-04-18 20:58:28

+0

這裏沒有什麼可調試的,因爲你所有的問題看起來都是語法錯誤。 – Chad 2012-04-18 20:59:19

+1

這不是家庭主婦,我不知道如何解決語法錯誤 – Foxic 2012-04-18 21:00:16

回答

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

這是錯誤的,std::ostreams只提供operator<<來插入格式化的d ATA。改爲使用cout << "Please enter a number\n";

getline(cin x); 

首先,你錯過了一個,,因爲getline需要兩個或三個參數。但由於xinteger而不是std::string它仍然是錯誤的。想一想 - 你能存儲一個整數內的文本行嗎?改爲使用cin >> x

int y = rand(); 

雖然這似乎沒有錯,但是有一個邏輯錯誤。 rand()是一個僞隨機數發生器。它使用種子作爲起始值和某種算法(a*m + b)。因此你必須指定一個起始值,也叫做種子。您可以使用srand()來指定。相同的種子會產生相同的數字順序,所以請使用類似srand(time(0))的東西。

while x != y 
if x < y; 

使用括號。並放棄額外的;。在您的程序中的流浪分號;類似於空表達式。

編輯:工作代碼:

#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 2012-04-18 21:11:06

+0

不客氣。如果你使用'g ++'編譯,然後使用'-Wall -Wextra'來獲得更多的警告 - 這將幫助你更快地找到你的錯誤。 – Zeta 2012-04-18 21:23:02

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需要使用「<<」運算符而不是「>>」運算符。 – 2012-04-18 21:18:28

+0

並沒有計劃解決所有的錯誤,而是從第一個被擊中的開始。 – 2012-04-18 21:26:27

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試圖發送一些東西到一個字符串? – 2012-04-18 21:11:29

+0

@PaoloBrandoli這是錯字。更正它。 – 2012-04-18 21:14:35

1

不是過於熟悉C++,但我敢肯定的同時,/如果應該是這個樣子

while (x != y) 
{ 

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

如果這兩個條件while循環應該用括號嵌套。

+0

cout需要使用「<<」運算符而不是「>>」運算符。 – 2012-04-18 21:16:36

+0

看起來像我不熟悉比我想大聲笑謝謝。 – 2012-04-18 21:17:19

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需要使用「<<」運算符而不是「>>」運算符。 – 2012-04-18 21:18:21