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


#ifndef DECISION_H
#define DECISION_H

#include "data_stat.h"
#include <math.h>

int make_decision(double *data, int n);

#endif



#include "decision.h"

int is_three_sigma(double *data, int n) {
    if (n == 0) return 0;
    
    double mean_val = mean(data, n);
    double sum_sq = 0.0;
    
    for (int i = 0; i < n; i++) {
        double diff = data[i] - mean_val;
        sum_sq += diff * diff;
    }
    
    double sigma = sqrt(sum_sq / n);
    double left = mean_val - 3 * sigma;
    double right = mean_val + 3 * sigma;
    
    for (int i = 0; i < n; i++) {
        if (data[i] < left || data[i] > right) {
            return 0;
        }
    }
    return 1;
}

int make_decision(double *data, int n) {
    const double GOLDEN_RATIO_INV = 0.618;
    
    if (n == 0) return 0;
    
    double mean_val = mean(data, n);
    
    if (mean_val < GOLDEN_RATIO_INV) {
        return 0;
    }
    
    return is_three_sigma(data, n);
}





#include "../data_libs/data_io.h"
#include "../data_libs/data_stat.h"
#include "../data_libs/decision.h"

int main() {
    int n;
    double *data;
    int decision = 0;
    
    printf("Enter number of elements: ");
    scanf("%d", &n);
    
    data = (double*)malloc(n * sizeof(double));
    if (data == NULL) {
        printf("n/a\n");
        return 1;
    }
    
    input(data, n);
    
    decision = make_decision(data, n);
    
    if (decision == 1) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }
    
    free(data);
    return 0;
}