0

ステートメントがこのように機能する場合はどうなりますか?これは「数を推測する」ゲームです。1つ目は高く/低くなると言った場合、2つ目は50、100、または100以上の範囲内にあるかどうかを示します。

両方が同時に動作するはずですが、エラーが発生します。

'|の前の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;

}
4

2 に答える 2

4

括弧がありません。

たとえば、次の行です。

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

読む必要があります:

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

if条件全体を括弧で囲む必要があるためです。

他にも問題があるようです。

于 2012-04-27T04:18:26.887 に答える
0

@ jonathan-woodによる正解に加えて、以下はあなたの意図をより明確に表現するかもしれません:

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

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

参考:コードの可読性が向上すると思われる場合は、「||」の代わりに「or」と「and」を使用することもできます。と "&&"。したがって、以下は合法です。

if ((y - x - 50 <= 0) or (x - y - 50 <= 0)) {
    ...
}
于 2012-04-27T05:09:30.287 に答える