2012-04-27 73 views
0

如果語句以這種方式工作嗎?這是一個「猜數字」遊戲。第一個如果說更高/更低,第二個如果說你是在50,100或100+範圍內。if條件下的編譯錯誤

兩者都應該同時工作,但我得到一個錯誤。

37行之前的意外主表達式| |」令牌,第38行 預計';' 'COUT'

#include <iostream> 
#include <cstdlib> 
#include <time.h> 
#include <cstdio> 
using namespace std; 

int main() 
{ 
    int x; 
    cout << "Please enter a number\n"; 

    srand(time(0)); 
    int y = rand(); 

    while (x != y) 
    { 
     cin >> x; 
     { 

     if (!(cin.good()))   //1st if 
     { 
      cout << "No letters noob" << endl; 
      cin.clear(); 
      cin.sync(); 
     } 
     else if (x < y) 
      cout << "Go higher" << endl; 
     else if (x > y) 
      cout << "Go lower" << endl; 
     else 
      cout << "You win!!" << endl; 
     } 

     { 

     if (y - x - 50 <= 0) || (x - y - 50 <= 0)  //2nd if 
      cout << "within 50 range" << endl; 
     else if (y - x - 100 <= 0) || (x - y - 100 <= 0) 
      cout << "within 100 range" << endl; 
     else 
      cout << "100+ value away" << endl; 
     } 
    } 
cin.get(); 
getchar(); 
return 0; 

} 
+1

我也在做代碼太複雜,或者這是可讀的嗎? – Foxic 2012-04-27 04:15:01

+3

你有額外的大括號,其中不明確的點和一些關鍵丟失的括號。 – geekosaur 2012-04-27 04:15:42

+1

你有什麼錯誤? – iammilind 2012-04-27 04:15:43

回答

4

之前你缺少括號。

例如,該行:

if (y - x - 50 <= 0) || (x - y - 50 <= 0) 

改爲:

if ((y - x - 50 <= 0) || (x - y - 50 <= 0)) 

由於整個如果條件必須包裝在括號中。

看起來你可能還有其他一些問題。

0

除了正確答案通過@喬納森 - 木材,下面可以更清晰地表達自己的意圖:

#include <cstdlib> 
... 
const int off_by = abs(x - y); 

if (off_by <= 50) { 
    ... 
} else if (off_by <= 100) { 
    ... 
} 

FYI:如果你認爲它會提高你的代碼的可讀性,你也可以使用「或「和」和「而不是」||「和「& &」。所以,以下是合法的:

if ((y - x - 50 <= 0) or (x - y - 50 <= 0)) { 
    ... 
}