Skip to content
Snippets Groups Projects
Forked from GOSSA JULIEN / P4z
This fork has diverged from the upstream repository.
main.c 7.27 KiB
#include "../Tris/triInsertion.h"
#include "../Tris/triFusion.h"
#include "../Tris/triRapide.h"
#include "../Tris/triBulle.h"
#include "../Tris/triRapideInsertion.h"
#include "../Lib/utils.h"

int main(int argc, char **argv){
    if(argc<3){
        printf("Usage: ./tri <option> <input.txt> d \n");
        exit(1);
    }
    struct data data;
    initData(&data);
    

    if((strcmp(argv[1], "--insertion") == 0) || strcmp(argv[1], "-i")== 0){
        int n= 0;
        long *tab = readToTab(argv[2], &n);
        // printf("n:%d\n", n);
        // printf("Base      : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld-", tab[i]);
        // }
        // printf("\n");
        triInsertion(tab, n);
        // printf("Insertion : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld-", tab[i]);
        // }
        // printf("\n");
        free(tab);
    }
    else if(strcmp(argv[1], "--fusion")== 0 || strcmp(argv[1], "-f")== 0){
        int n= 0;
        long *tab = readToTab(argv[2], &n);

        
        // printf("Base      : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld,", tab[i]);
        // }
        // printf("\n");
        triFusion(tab, n);
        // printf("Fusion    : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld,", tab[i]);
        // }
        // printf("\n");
        free(tab);
    }
    else if((strcmp(argv[1], "--rapide")== 0) || strcmp(argv[1], "-r")== 0){
        int n= 0;
        long *tab = readToTab(argv[2], &n);
        // printf("Base      : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld,", tab[i]);
        // }
        // printf("\n");
        triRapide(tab, n);
        // printf("Rapide    : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld,", tab[i]);
        // }
        // printf("\n");
        free(tab);
    }
    else if((strcmp(argv[1], "--rapideInsertion")== 0) || strcmp(argv[1], "-ri")== 0){
        int n= 0;
        long *tab = readToTab(argv[2], &n);
        // printf("Base      : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld,", tab[i]);
        // }
        // printf("\n");
        triRapideInsertion(tab, n);
        printf("Rapide    : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        free(tab);
    }
    else if((strcmp(argv[1], "--bulle")== 0) || strcmp(argv[1], "-b")== 0){
        int n= 0;
        long *tab = readToTab(argv[2], &n);
        // printf("Base      : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld,", tab[i]);
        // }
        // printf("\n");
        triBulle(tab, n);
        // printf("Bulle    : ");
        // for(int i  = 0; i<n; i++){
        //     printf("%ld,", tab[i]);
        // }
        // printf("\n");
        free(tab);
    }
    else if (strcmp(argv[1], "-a") == 0)
    {
        int n= 0;
        long *tab = readToTab(argv[2], &n);
        printf("Base      : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        
        triInsertion(tab, n);
        printf("Insertion : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        triFusion(tab, n);
        printf("Fusion    : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        triRapide(tab, n);
        printf("Rapide    : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        free(tab);
    }
    else if (strcmp(argv[1], "-g") == 0)
    {
        if(argc<4){
            printf("Usage: ./tri -g <max> <size>\n");
            exit(1);
        }
        size_t max = atoi(argv[2]);
        size_t size = atoi(argv[3]);
        long* tab = generate_tab(max, size);
        for(size_t i  = 0; i<size; i++){
            printf("%ld ", tab[i]);
        }
        printf(".");
        printf("\n");
        
        free(tab);
    }
    else if (strcmp(argv[1], "-gt") == 0)
    {
        if(argc<4){
            printf("Usage: ./tri -gt <max> <size>\n");
            exit(1);
        }
        size_t max = atoi(argv[2]);
        size_t size = atoi(argv[3]);
        long* tab = generate_tab(max, size);
        triRapide(tab, size);
        for(size_t i  = 0; i<size; i++){
            printf("%ld ", tab[i]);
        }
        printf(".");
        printf("\n");
        
        free(tab);
    }
    else if (strcmp(argv[1], "-gti") == 0)
    {
        if(argc<4){
            printf("Usage: ./tri -gti <max> <size>\n");
            exit(1);
        }
        size_t max = atoi(argv[2]);
        size_t size = atoi(argv[3]);
        long* tab = generate_tab(max, size);
        triRapide(tab, size);
        for(size_t i  = 0; i < size; i++){
            printf("%ld ", tab[size-i-1]);
        }
        printf(".");
        printf("\n");
        
        free(tab);
    }
    else if (strcmp(argv[1], "-gtp") == 0)
    {
        if(argc<4){
            printf("Usage: ./tri -gtp <max> <size>\n");
            exit(1);
        }
        size_t max = atoi(argv[2]);
        size_t size = atoi(argv[3]);
        long* tab = generate_tab(max, size);
        triRapide(tab, size/2);
        for(size_t i  = 0; i < size; i++){
            printf("%ld ", tab[i]);
        }
        printf(".");
        printf("\n");
        
        free(tab);
    }
    else if((strcmp(argv[1], "--insertion-verbose") == 0) || strcmp(argv[1], "-iv")== 0){
        int n= 0;
        long *tab = readToTab(argv[2], &n);
        printf("Base      : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        data.time = clock();
        triInsertionVerbose(tab, n, &data);
        long new_time = (double)clock() - data.time;
        data.time = new_time;
        printf("Insertion : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        printData(data);
        free(tab);
    }
     else if((strcmp(argv[1], "--fusion-verbose") == 0) || strcmp(argv[1], "-fv")== 0){
        int n= 0;
        long *tab = readToTab(argv[2], &n);
        printf("Base      : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        data.time = clock();
        triFusionVerbose(tab, n, &data);
        long new_time = (double)clock() - data.time;
        data.time = new_time;
        printf("Fusion : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        printData(data);
        free(tab);

    }
     else if((strcmp(argv[1], "--rapide-verbose") == 0) || strcmp(argv[1], "-rv")== 0){
        int n= 0;
        long *tab = readToTab(argv[2], &n);
        printf("Base      : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        data.time = clock();
        triInsertionVerbose(tab, n, &data);
        long new_time = (double)clock() - data.time;
        data.time = new_time;
        printf("Rapide : ");
        for(int i  = 0; i<n; i++){
            printf("%ld,", tab[i]);
        }
        printf("\n");
        printData(data);
        free(tab);

    }
    else{
        printf("Usage: ./tri <option> <input.txt> f\n");
    }
    return 0;
}