Функции в си. Массивы
Нужно написать функцию, которая считает среднее арифметическое среди элементов массива размера N. Проблемы возникли их за оптимизации. Решил сразу заполнить массив в самой функции, но компилятор выдает ошибку. Что у меня не так ? Помогите пожалуйста.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int alg(int N, int massif[N])
{
float summ = 0;
for (int i = 0; i < N; i ++)
{
massif[i] = rand() % 10;
printf("%d ", massif[i]);
summ += massif[i];
}
float float_sum = summ;
float middle = float_sum / N;
return middle;
}
int main ()
{
srand(time(NULL));
int N;
float middle;
printf("SIZE = ");
scanf("%d", &N);
int massif[N];
middle = alg(N, massif[N]);
printf("%.2f", middle);
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Проще всего - без массива. Вот код с абсолютно той же функциональностью:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main()
{
srand(time(NULL));
int N;
float middle = 0;
printf("SIZE = ");
scanf("%d", &N);
for(int i = 0; i < N; ++i)
{
int j = rand() % 10;
printf("%d ",j);
middle += j;
}
printf("%.2f", middle/N);
}
Но если очень нужно исправить именно ваш код... Тогда вот:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int alg(int N, int *massif)
{
float summ = 0;
for (int i = 0; i < N; i ++)
{
massif[i] = rand() % 10;
printf("%d ", massif[i]);
summ += massif[i];
}
float float_sum = summ;
float middle = float_sum / N;
return middle;
}
int main ()
{
srand(time(NULL));
int N;
float middle;
printf("SIZE = ");
scanf("%d", &N);
int * massif = malloc(sizeof(int)*N);
middle = alg(N, massif);
printf("%.2f", middle);
free(massif);
return 0;
}