2012-04-27 10 views
0

if文がこのように動作しますか?これは「数を推測する」ゲームです。第1は、あなたが50,100、または100+の範囲内にある場合、2番目の方が高いかより低いかを言うなら、2番目の方が言います。if-conditionのコンパイラエラー

の両方が同時に動作するようになったが、私はエラーを取得しています。

ライン37「の前に予想外の一次式| | 'トークン、行38 ';' '裁判所未満'

#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

+3

ポイントが不明瞭な余分なカッコと、カッコが欠けているキーがあります。 – geekosaur

+1

どのようなエラーが表示されますか? – iammilind

答えて

4

前に括弧が欠落しています。例えば

、この行:

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

は次のようになります。

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

を全体ので状態は括弧でラップする必要があります。あなたがそこにもいくつかの他の問題を有していても良いように

が見えます。 @ジョナサン・ウッドによって正解に加えて

0

、以下がより明確に自分の意図を表現することがあります。

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

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

:あなたはそれはあなたのコードの可読性を向上させるだろうと思うならば、あなたはまた、「使用することができますか"||"の代わりに "and" 「& &」となります。したがって、以下は合法です。

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