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


#include <stdio.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);

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

    if (input(data, &n)) {
        output(data, n);
        printf("\n%d %d %.6lf %.6lf", max(data, n), min(data, n), mean(data, n), variance(data, n));
    } else {
        printf("n/a");
    }

    return 0;
}

int input(int *a, int *n) {
    int result = 1;

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

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

    return result;
}

void output(int *a, int n) {
    for (int *p = a; p - a < n; p++) {
        if (p != a) {
            printf(" ");
        }
        printf("%d", *p);
    }
}

int max(int *a, int n) {
    int result = *a;

    for (int *p = a + 1; p - a < n; p++) {
        if (*p > result) {
            result = *p;
        }
    }

    return result;
}

int min(int *a, int n) {
    int result = *a;

    for (int *p = a + 1; p - a < n; p++) {
        if (*p < result) {
            result = *p;
        }
    }

    return result;
}

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

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

    return sum / n;
}

double variance(int *a, int n) {
    double result = 0.0;
    double avg = mean(a, n);

    for (int *p = a; p - a < n; p++) {
        double diff = *p - avg;
        result += diff * diff;
    }

    return result / n;
}