2017-02-03 16 views
-4

2次元配列を取り、配列内のevensをc0untsし、その配列内のevensの量を返す関数で作られたプログラムを書いています。この関数は6.時々私は時々、私はあなたが欲しいのループのものは、私が想像2147483646配列内のevensを見つける

#include <iostream> 
#include <array> 
using namespace std; 



const int MaxNumOfRows = 3; 
const int MaxNumOfColumns = 2; 


int Even(int A[MaxNumOfRows][MaxNumOfColumns], int length, int width) 
{ 

int NumnberOfEvens = 0; 
int i; 
int j; 

for (i = 0; i < length; length++) 
{ 
    for (j = 0; j < width; width++) 
    { 
     if (A[i][j] % 2 == 0) 
     { 
      NumnberOfEvens++; 
     } 
    } 
} 

return NumnberOfEvens; 

} 

int main() 
{ 



//int output = 0; 
int A[MaxNumOfRows][MaxNumOfColumns] = 
{ 
    {2,2},{2,4},{2,2} 
}; 


Even(A, MaxNumOfRows, MaxNumOfColumns); 

//output = Even(A, MaxNumOfRows, MaxNumOfColumns); 

cout << Even(A, MaxNumOfRows, MaxNumOfColumns) << endl; 

system("pause"); 

return 0; 

} 
+1

このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。少なくとも、問題を再現する[mcve]と、デバッガで行った観察結果を含めるように質問を編集する必要があります。私は入力ミスとしてこれを閉じるために投票しました – Tas

答えて

0

チェックなどの数が増加するために取得するには、0を取得している私はそれを意図した値を、返却されていません変数++ iおよび++ jではなく、幅++および長さ++である。

例をあげてみると、実行中のコードをステップ実行してデバッガで問題を見つけるのは簡単でしょう...デバッガでIDEを使って記述していますか?

0

ループ変数( 'i'と 'j')で増分を適用していません。 '長さ'と '幅'は(長さ++、幅++のために)増加していますが、 'i'と 'j'はそうではありません。だから、ループは止まらないので、ガーベジの値は失われません。

for (i = 0; i < length; length++) 
{ 
    for (j = 0; j < width; width++) 
    { 
     if (A[i][j] % 2 == 0) 
     { 
      NumnberOfEvens++; 
     } 
    } 
} 

これは動作する必要があります。

for (i = 0; i < length; i++) 
{ 
    for (j = 0; j < width; j++) 
    { 
     if (A[i][j] % 2 == 0) 
     { 
      NumnberOfEvens++; 
     } 
    } 
} 
関連する問題