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


#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