我试图找到二维数组中所有列的平均值,并将它们存储到一维数组中。
从那个1D数组中,我想返回最小数字的位置。
这是我的代码,它确实会产生一个答案(没有编译/运行时错误),但是它给出的答案是不正确的。
int function(){
int m, n,p;
for(m = 0; m < NROW; m++){//I think the problem must be within this set of for loops.
for(n = 0; n < NCOL; n++){
averages[n] += twoD[n][m]; //averages is an array of type double
}
}
for(p = 0; p < NCOL; p++){
averages[p] = (((double)averages[p])/((double)NROW));
}
int d, location;
int lowest = averages[0];
for ( d = 1 ; d < NCOL ; ++d )
{
if ( averages[d] < lowest )
{
lowest = averages[d];
location = d;
}
}
return location;
}
最佳答案
您没有显示您将averages
初始化为0
:
for(n = 0; n < NCOL; n++){
averages[n] = 0.;
for(m = 0; m < NROW; m++){
averages[n] += twoD[n][m]; //averages is an array of type double
}
}
精度的另一个问题(但我不认为是双值的情况)是,当计算平均值与第一个GESS几乎没有方差的平均值时更准确,然后计算:
avg(X) = x1 + avg(X - x1)
在哪里x1
是对avg(X)
的猜测。