Как исправить вывод результатов функций, чтобы выдавало ожидаемые значения?
Нужно из массива до 10 чисел найти экстремумы (max и min), математическое ожидание и дисперсию, считая, что мы имеем дело с дискретным равномерным распределением).
#include <stdlib.h>
#include <math.h>
#define NMAX 10
int input (int *a, int *n);
void output (int *a, int n);
int max (int *a, int n);
int min (int *a, int n);
double mean (int *a, int n);
double variance (int *a, int n);
double output_result (int max_v, int min_v, double mean_v, double variance_v);
int main ()
{
int n, data[NMAX];
if (input (data, &n) != 0)
{
printf ("N/A");
}
else
{
output (data, n);
output_result (max (data, n),
min (data, n), mean (data, n), variance (data, n));
return 0;
}
}
int input (int *a, int *n)
{
char bruh;
printf ("Input integers: ");
if (scanf ("%d", n) || (*n > 10) || (*n <= 0))
{
return 0;
}
else
{
for (int i = 0; i < *n; i++)
scanf ("%d", &i);
}
}
void output (int *a, int n)
{
for (int i = 0; i < n; i++)
printf ("%d", a[i]);
printf ("\n");
}
int max (int *a, int n)
{
int max_v;
int i;
max_v = a[i];
for (int i = 0; i < n; i++)
scanf ("%d", &a[i]);
if (max_v < a[i])
max_v = a[i];
printf ("Maximum of NMAX is %d", max_v);
return max_v;
}
int min (int *a, int n)
{
int min_v;
int i;
min_v = 1;
for (int i = 0; i < n; i++)
scanf ("%d", &a[i]);
if (min_v > a[i])
min_v = a[i];
printf ("Minimum of NMAX is %d", min_v);
return min_v;
}
double mean (int *a, int n)
{
int i;
double sum;
double mean_v;
sum = 0.0;
for (i = 0; i < n; i++)
{
sum += a[i];
mean_v = (sum / n);
printf ("Mean is: %.6lf", mean_v);
return mean_v;
}
}
double variance (int *a, int n)
{
int i, mean_v;
return ((a[i] - mean_v) / n);
}
double output_result (int max_v, int min_v, double mean_v, double variance_v)
{
printf ("The results are: %d, %d, %.6lf, %.6lf", max_v, min_v, mean_v,
variance_v);
}```
При выполнении получилось вот так:
Input integers: 4
-40869236032766-40869238432766
Mean is: -102173090.000000
1
2
3
4
Minimum of NMAX is 1
1
2
3
4
Maximum of NMAX is 1The results are: 1, 1, -102173090.000000, 0.000000%