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


#include <stdio.h>

#define NMAX 10

int check_tail(void);
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);
void output_result(int max_v, int min_v, double mean_v, double variance_v);

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

    if (input(data, &n)) {
        output(data, n);
        printf("\n");
        output_result(max(data, n), min(data, n), mean(data, n), variance(data, n));
    } else {
        printf("n/a");
    }

    return 0;
}

int check_tail(void) {
    int ch;
    int result = 1;

    while ((ch = getchar()) != '\n' && ch != EOF) {
        if (ch != ' ' && ch != '\t') {
            result = 0;
        }
    }

    return result;
}

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

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

    while (result && i < *n) {
        if (scanf("%d", a + i) != 1) {
            result = 0;
        }

        i++;
    }

    if (result && !check_tail()) {
        result = 0;
    }

    return result;
}

void output(int *a, int n) {
    int i = 0;

    while (i < n) {
        if (i > 0) {
            printf(" ");
        }

        printf("%d", *(a + i));
        i++;
    }
}

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

    while (i < n) {
        if (*(a + i) > result) {
            result = *(a + i);
        }

        i++;
    }

    return result;
}

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

    while (i < n) {
        if (*(a + i) < result) {
            result = *(a + i);
        }

        i++;
    }

    return result;
}

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

    while (i < n) {
        sum += *(a + i);
        i++;
    }

    return sum / n;
}

double variance(int *a, int n) {
    double mean_v = mean(a, n);
    double sum = 0.0;
    double diff;
    int i = 0;

    while (i < n) {
        diff = *(a + i) - mean_v;
        sum += diff * diff;
        i++;
    }

    return sum / n;
}

void output_result(int max_v, int min_v, double mean_v, double variance_v) {
    printf("%d %d %.6lf %.6lf", max_v, min_v, mean_v, variance_v);
}