在数组中查找均匀值

时间:2017-02-03 02:09:44

标签: c++ arrays multidimensional-array

我正在编写一个程序,该程序由一个接收二维数组的函数组成,在数组中输入均衡并返回该数组中的均值。该函数没有返回我想要的值,即6.有时我得到0,有时我得到一个像2147483646的数字。

#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;

}

2 个答案:

答案 0 :(得分:0)

检查那些for循环,我想你想要增加变量++ i和++ j而不是width ++和length ++。

通过这个简单的例子,我想通过执行代码并在调试器中找到问题将非常简单......你是否使用带调试器的IDE编写这个?

答案 1 :(得分:0)

这里没有对循环变量('i'和'j')应用增量。 'length'和'width'正在增加(由于长度++,宽度++),而'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++;
        }
    }
}