1. ホーム
  2. c++

[解決済み】C++エラー: "("トークンの前に期待される識別子

2022-02-11 10:04:46

質問

int nn1,nn2;
for (int i=1;i<=m;i++) if (A[i]>minim) && (A[i]<maxim) nn1++;
for (int j=1;j<=n;j++) if (B[j]>minim) && (B[j]<maxim) nn2++;
if (nn1>nn2) cout<<"1";
if (nn1<nn2) cout<<"2";
if (nn1=nn2) cout<<"0";

return 0;
}

なぜコンパイラがエラーを表示するのか、どなたかご指摘ください。

解決方法を教えてください。

これらのif文では、外側の括弧がありません。

for (int i=1;i<=m;i++) if (A[i]>minim) && (A[i]<maxim) nn1++;
for (int j=1;j<=n;j++) if (B[j]>minim) && (B[j]<maxim) nn2++;

があるはずだと思うのです。

for (int i=1;i<=m;i++) if ( (A[i]>minim) && (A[i]<maxim) ) nn1++;
for (int j=1;j<=n;j++) if ( (B[j]>minim) && (B[j]<maxim) ) nn2++;

そして、ループは怪しく見える。配列のインデックスが0から始まることを考慮してください。 N であれば、有効なインデックスの範囲は [0, N-1]

を初期化するのを忘れています。 nn1nn2 .

次のような意味だと思われます。

int nn1 = 0, nn2 = 0;

for ( int i = 0; i < m; i++ ) 
{
    if ( ( A[i] > minim ) && ( A[i] < maxim ) ) nn1++;
}

for ( int i = 0; i < n; i++ ) 
{
    if ( ( B[i] > minim ) && ( B[i] < maxim ) ) nn2++;
}

if ( nn1 > nn2 ) cout << "1";
else if ( nn1 < nn2 ) cout << "2";
else cout << "0";