Загрузка данных



#include <stdio.h>
#include <math.h>
#define NMAX 30

int input(int *a, int *n);
double mean(int *a, int n);
double variance(int *a, int n);
int search(int *a, int n);

int main()
{
    int n, data[NMAX];

    if (input(data, &n) == 0)
    {
        printf("n/a");
        return 0;
    }

    printf("%d", search(data, n));

    return 0;
}

int input(int *a, int *n)
{
    if (scanf("%d", n) != 1 || *n < 1 || *n > NMAX)
    {
        return 0;
    }

    for (int *p = a; p - a < *n; p++)
    {
        if (scanf("%d", p) != 1)
        {
            return 0;
        }
    }

    return 1;
}

double mean(int *a, int n)
{
    double sum = 0;

    for (int *p = a; p - a < n; p++)
    {
        sum += *p;
    }

    return sum / n;
}

double variance(int *a, int n)
{
    double average = mean(a, n);
    double sum = 0;

    for (int *p = a; p - a < n; p++)
    {
        double difference = *p - average;
        sum += difference * difference;
    }

    return sum / n;
}

int search(int *a, int n)
{
    double average = mean(a, n);
    double limit = average + 3 * sqrt(variance(a, n));

    for (int *p = a; p - a < n; p++)
    {
        if (*p != 0 && *p % 2 == 0 &&
            *p >= average && *p <= limit)
        {
            return *p;
        }
    }

    return 0;
}