0

考虑以下数组:

arr[0][0] = 5.42; // val
arr[0][1] = (int)1;    // freq
arr[1][0] = 41.45;
arr[1][1] = (int)1; // freq
arr[2][0] = 10.55;
arr[2][1] = (int)1;// freq
arr[3][0] = 78.55;
arr[3][1] = (int)1;// freq

它应该代表一个(非累积)频率表。所以每个值的频率为 1。

现在考虑以下函数:

      const int SIZE = 1;
    double standardDeviation(double list[][SIZE], double mean, int size) {
    double sumSquared = NULL;
    double sum = NULL;
    double sumFx = NULL;
    int sumFreq = NULL;
    for(int i = 0; i < size; i++)
        sumFreq += list[i][1]; 

    return sumFreq;
    }

(显然缺少一些代码)但是在当前代码中,我的目标是返回频率的总和,应该是 4,但它只返回索引为 [i][0] 的数组成员的值 - 基本上,价值。

任何想法为什么?

4

2 回答 2

2

您的数组没有被正确访问,因为您有:

const int SIZE = 1;

你需要这样:

const int SIZE = 2;

顺便说一句,这些初始化都没有意义:

double sumSquared = NULL;
double sum = NULL;
double sumFx = NULL;
int sumFreq = NULL;

NULL0,是的,但从语义上讲,它旨在用于指示空指针,并且这些变量都不是指针。

于 2013-04-13T16:59:11.990 回答
1

参数声明为double list[][1]

所以list[i][1]越界了。

于 2013-04-13T16:59:05.040 回答