#include <stdio.h>
#include <stdlib.h>
#include "../data_libs/data_io.h"
#include "../data_module/data_process.h"
#include "../yet_another_decision_module/decision.h"
void sort(double *data, int n);
void swap(double *a, double *b);
int main(void) {
double *data = NULL;
int n;
printf("LOAD DATA...\n");
if (scanf("%d", &n) != 1 || n <= 0) {
printf("ERROR");
return 1;
}
data = malloc(n * sizeof(double));
if (data == NULL) {
printf("ERROR");
return 1;
}
input(data, n);
printf("RAW DATA:\n\t");
output(data, n);
printf("\nNORMALIZED DATA:\n\t");
if (normalization(data, n)) {
output(data, n);
printf("\nSORTED NORMALIZED DATA:\n\t");
sort(data, n);
output(data, n);
printf("\nFINAL DECISION:\n\t");
if (make_decision(data, n)) {
printf("YES");
} else {
printf("NO");
}
} else {
printf("ERROR");
}
free(data);
return 0;
}
void sort(double *data, int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (data[j] > data[j + 1]) {
swap(data + j, data + j + 1);
}
}
}
}
void swap(double *a, double *b) {
double temp = *a;
*a = *b;
*b = temp;
}
CC = gcc
CFLAGS = -Wall -Wextra -Werror -std=c11
BUILD_DIR = ../../build
TARGET = $(BUILD_DIR)/Quest_3
STATIC_LIB = $(BUILD_DIR)/data_stat.a
DYNAMIC_LIB = $(BUILD_DIR)/data_process.so
SOURCES = main_executable_module.c \
../data_libs/data_io.c \
../data_libs/data_stat.c \
../data_module/data_process.c \
../yet_another_decision_module/decision.c
all: $(TARGET)
$(TARGET): $(SOURCES)
mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) $(SOURCES) -o $(TARGET) -lm
data_stat.a:
mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) -c ../data_libs/data_stat.c -o $(BUILD_DIR)/data_stat.o
ar rcs $(STATIC_LIB) $(BUILD_DIR)/data_stat.o
build_with_static: data_stat.a
mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) main_executable_module.c ../data_libs/data_io.c ../data_module/data_process.c ../yet_another_decision_module/decision.c $(STATIC_LIB) -o $(BUILD_DIR)/Quest_4 -lm
data_process.so:
mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) -fPIC -shared ../data_module/data_process.c ../data_libs/data_stat.c -o $(DYNAMIC_LIB) -lm
build_with_dynamic: data_process.so
mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) main_executable_module.c ../data_libs/data_io.c ../yet_another_decision_module/decision.c ../data_libs/data_stat.c -L$(BUILD_DIR) -ldata_process -Wl,-rpath,$(BUILD_DIR) -o $(BUILD_DIR)/Quest_5 -lm
clean:
rm -rf $(BUILD_DIR)
rebuild: clean all