关于计算平均值和方差的函数

时间:2022-10-09 00:44:17
本人是菜鸟  想请教各位大侠

下面是我自己写的一个计算数组平均值和方差的函数  运行时总是报错  请问错在哪里  我找了好久没找到

double __fastcall TTabelForm::DataProcess(double *matrix)
{       
       double result[2];
       result[0]=0.0;
       result[1]=0.0;
       int count=sizeof(matrix)/8;//数组中元素的个数
        //先计算行的平均值,放在result[0]中

                for(int i=0;i<count;i++)//各行的和
                {
                        result[0] += matrix[i];
                }
                result[0] = result[0]/count;//求平均值


        //再计算方差,放在result[1]中。公式(Σ(Si-S均值)^2)/n

                for(int j=0;j<count;j++)
                {
                        result[1] += (matrix[j]-result[0])*(matrix[j]-result[0]);//求分子部分
                }
                result[1] = result[1]/count;

                return *result;
}

4 个解决方案

#1


int count=sizeof(matrix)/8;//数组中元素的个数
并不能得到 数组中元素的个数

#2


引用 1 楼 chenxing888 的回复:
int count=sizeof(matrix)/8;//数组中元素的个数
并不能得到 数组中元素的个数

附议,C语言的的指针肯定不能这么用,建议楼主再多研究一下数组和指针。

#3


DataProcess(double *matrix)如果是数组,那么应该声明成这样
DataProcess(double matrix[], int length)
这样才是好的方式

#4


int count=sizeof(matrix)/8;//数组中元素的个数
sizeof(matrix)得到的是matrix这个指针的大小即32位机的4个字节。

#1


int count=sizeof(matrix)/8;//数组中元素的个数
并不能得到 数组中元素的个数

#2


引用 1 楼 chenxing888 的回复:
int count=sizeof(matrix)/8;//数组中元素的个数
并不能得到 数组中元素的个数

附议,C语言的的指针肯定不能这么用,建议楼主再多研究一下数组和指针。

#3


DataProcess(double *matrix)如果是数组,那么应该声明成这样
DataProcess(double matrix[], int length)
这样才是好的方式

#4


int count=sizeof(matrix)/8;//数组中元素的个数
sizeof(matrix)得到的是matrix这个指针的大小即32位机的4个字节。