#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);
}
Код должен определять среднее и стандартное отклонение числа поплавков, введенных пользователем. При попытке скомпилировать его я получаю ошибку сегментации. Я попытался освободить malloc, но у него появилось больше проблем для кода, поэтому я просто оставил его как есть - хотя это, вероятно, проблема с распределением памяти.C программа для stddev/mean
Спасибо
Если у вас возникла ошибка сегментации при попытке ее компиляции, ваш компилятор сломался. – Oswald
Почему у вас есть 'float * array [MAX];'? Что не так с 'float array [MAX];'? – Ryan
Является ли Array значительным массивом плавающих указателей? –