gpt4 book ai didi

stddev/mean 的 C 程序

转载 作者:行者123 更新时间:2023-11-30 15:44:17 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>

#define MAX 100

void calc(float**, int, float*, float*);

int main( int argc, char* argv[] )
{
float *array[MAX];
float *MEAN;
float *SD;
int array_size, i;

array_size = argc;

for( i = 0; i < argc ; ++i )
{
*array = (float *) malloc( argc*(sizeof(float)));
*array[i] = atof(argv[i]);
}

calc(array, array_size, MEAN, SD);
return 0;
}

void calc(float* arr[] , int arr_size, float* mean, float* stdev)
{
int sum, i;

for ( i = 0; i < arr_size ; ++i )
{
sum += *arr[i];
}

*mean = sum / arr_size;

printf("%.2f", *mean);

for ( i = 0; i < arr_size ; ++i )
{
sum += pow((*arr[i]-*mean), 2);
}

*stdev = sqrt((sum/arr_size));

printf("%.2f", *stdev);

}

该代码应该确定多个用户输入的 float 的平均值和标准差。我在尝试编译它时不断遇到段错误。我尝试释放 malloc,但它给代码带来了更多问题,所以我就将其保留原样 - 尽管这可能是内存分配的问题。

谢谢

最佳答案

有几个问题:

  • float *array[MAX]; 是指向 float 数组的指针。你应该使用 float 组或指针。既然你正在使用malloc,你可以使用这样的指针:float *array;
  • 不要为每个 float 调用 malloc,而是为整个数组调用一次
  • 如果将 MEANSD 定义为指针,则必须使用对它们进行malloc。最好将它们声明为仅 float 并使用他们的地址(通过 &MEAN&SD)。
  • 您的sum变量应该是一个float,并且您应该初始化它到0。您还应该在计算 stdev 之前将其设置为 0
  • 请记住,argv[0] 包含您的程序的名称,因此你应该忽略它。
  • 还记得对使用 malloc 分配的任何内容调用 free当你完成它时。

代码的修改版本:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>

void calc(float*, int, float*, float*);

int main( int argc, char* argv[] ) {
float *array;
float MEAN;
float SD;
int array_size, i;
array_size = argc-1;
array = (float *) malloc( array_size*sizeof(float));
for( i = 0; i < array_size ; ++i ) {
array[i] = atof(argv[i+1]);
}
calc(array, array_size, &MEAN, &SD);
free (array);
return 0;
}

void calc(float* arr , int arr_size, float* mean, float* stdev) {
float sum=0;
int i;
for ( i = 0; i < arr_size ; ++i ) {
sum += arr[i];
}
*mean = sum / arr_size;
printf("%.2f ", *mean);
sum=0;
for ( i = 0; i < arr_size ; ++i ) {
sum += pow((arr[i]-*mean), 2);
}
*stdev = sqrt((sum/arr_size));
printf("%.2f", *stdev);
}

关于stddev/mean 的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19575647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com