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


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

#define NMAX 30

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

int main(void) {
    int n, data[NMAX];
    int ans = 0;

    if (input(data, &n) == 0) {
        double mean_a = mean(data, n);
        double variance_a = variance(data, n);
        for (int i = 0; i <= n || ans == 0; i++) {
            if (isCorrect(data[i], isEven(data[i]), mean_a, variance_a)) {
                ans = data[i];
            }
        }
        printf("%d", ans);
    } else {
        printf("n/a");
    }

}

int input(int *a, int *n) {
    int fl = 0;
    char inp[3], inp2[128];
    fgets(inp, 3, stdin);
    if (inp[2] == '\n' || inp[2] == '\0') {
        sscanf(inp, "%d", n);
    } else {
        fl = 1;
    }
    fgets(inp2, 128, stdin);
    if (inp2[*n * 2 - 2] == '\0' || inp2[(*n * 2)] != '\0') {
        fl = 1;
    }
    for (int i = 0; i <= *n*2-1 && fl == 0; i += 2) {
        a[i] = inp2[i] - '0';
    }
    return fl;
}

int isEven(int a) {
    int even = 0;
    if (a % 2 == 0) {
        even = 1;
    }
    return even;
}

double mean(int *a, int n) {
    double sum = 0.0;
    for (int i = 0; i <= n * 2 - 1; i += 2) {
        sum += a[i];
    }
    return sum / n;
}

double variance(int *a, int n) {
    double mean_a = mean(a, n);
    double sum_a = 0.0;
    for (int i = 0; i <= n * 2 - 1; i += 2) {
        sum_a += (a[i] - mean_a) * (a[i] - mean_a);
    }
    return sqrt(sum_a / n);
}
int isCorrect(int a, int isEven, double mean, double variance) {
    int iscorrect = 0;
    if (isEven == 1 && a != 0 && a >= mean && a <= (mean + 3 * variance)) {
        iscorrect = 1;
    }
    return iscorrect;
}