2016-10-10 3 views
1

私のforループを繰り返し処理するために配列を取得する際に問題があります。 この機能のポイントは、数字が配列のどこかにすでに置かれているかどうかをチェックして重複が現れないようにすることです。 関数を実行すると、関数の最初の要素を反復して停止します。は、私の配列の最初の要素のみをチェックすることができます

bool check(int wins[], int number) 
{ 
    for (int i = 0; i <= arraySize; ++i) 
     if (number == wins[i]) 
     { 
      return true; 
     } 
     else if (number != wins[i]) 
     { 
      return false; 
     } 

} 

私は本当に助けていただきありがとうございます。

+0

あなたは無条件に最初のチェック後に返します。 elseブランチを削除します。 – krzaq

+4

'return'ステートメントを修正すると、' i <= arraySize'は作成上の難問です。 – WhozCraig

答えて

3

あなたのインデントは誤解を招きます。あなたはどちらか、最初の反復でそう

bool check(int wins[], int number) 
{ 
    for (int i = 0; i <= arraySize; ++i) 
     if (number == wins[i]) 
     { 
      return true; 
     } 
     else if (number != wins[i]) 
     { 
      return false; 
     } 
} 

数は、要素に等しいか、それは違うのですが、両方の場合には、あなたが戻って機能が終了されています。ここでは何が起こっています!

あなたのアイテムを検索したい場合は、わずかな変更を行う必要があります:

bool check(int wins[], int number) 
{ 
    for (int i = 0; i < arraySize; ++i) // assuming that arraySize is some const size of the array 
     if (number == wins[i]) // if number is found 
     { 
      return true;  // return immediately 
     } 

    // if you arrive here, the loop finished without a match 
    return false; 
}