#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;
}