diff --git a/Algos_1/main.c b/Algos_1/main.c index d7a567c8b2b8afa81db378e3ac4398bd9ffc8a54..13756bf8cc3aa8134d668e402174e5157406385f 100644 --- a/Algos_1/main.c +++ b/Algos_1/main.c @@ -4,22 +4,23 @@ #include "utils.h" int main(int argc, char **argv){ - if(argc!=3){ - printf("Usage: ./tri <option> <input.txt>\n"); + if(argc<3){ + printf("Usage: ./tri <option> <input.txt> d \n"); exit(1); } long tab[100]; - int n = readToTab(tab, argv[2]); struct data data; initData(&data); - printf("Base : "); - for(int i = 0; i<n; i++){ - printf("%ld,", tab[i]); - } - printf("\n"); + if((strcmp(argv[1], "--insertion") == 0) || strcmp(argv[1], "-i")== 0){ + int n = readToTab(tab, argv[2]); + 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++){ @@ -28,6 +29,12 @@ int main(int argc, char **argv){ printf("\n"); } else if(strcmp(argv[1], "--fusion")== 0 || strcmp(argv[1], "-f")== 0){ + int n = readToTab(tab, argv[2]); + 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++){ @@ -36,6 +43,12 @@ int main(int argc, char **argv){ printf("\n"); } else if((strcmp(argv[1], "--rapide")== 0) || strcmp(argv[1], "-r")== 0){ + int n = readToTab(tab, argv[2]); + 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++){ @@ -45,6 +58,12 @@ int main(int argc, char **argv){ } else if (strcmp(argv[1], "-a") == 0) { + int n = readToTab(tab, argv[2]); + 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++){ @@ -64,8 +83,37 @@ int main(int argc, char **argv){ } printf("\n"); } + else if (strcmp(argv[1], "-g") == 0) + { + if(argc<3){ + printf("Usage: ./tri -g <output.txt> <size>\n"); + exit(1); + } + long *tab; + + size_t t = 0; + if(argc==3){ + t = NULL; + } + else{ + t = atoi(argv[3]); + } + size_t l = 0; + int fd = open(argv[2], O_RDWR | O_CREAT); + tab = generate_tab(t, &l); + dup2(fd, 1); + for(int i = 0; i<t; i++){ + + printf("%ld ", tab[i]); + } + printf("."); + printf("\n"); + close(fd); + + // free(tab); + } else{ - printf("Usage: ./tri <option> <input.txt>\n"); + printf("Usage: ./tri <option> <input.txt> f\n"); } return 0; } \ No newline at end of file diff --git a/Algos_1/tri b/Algos_1/tri deleted file mode 100755 index b1c3b93122fbcac33f253945a94a3c5ed4910bf4..0000000000000000000000000000000000000000 Binary files a/Algos_1/tri and /dev/null differ diff --git a/Algos_1/utils.c b/Algos_1/utils.c index f8bb284abf5a4ac462499b3200578600b5b0af3a..f39e30fb527645b57d57432eeed9ff0354a215a2 100644 --- a/Algos_1/utils.c +++ b/Algos_1/utils.c @@ -40,16 +40,23 @@ void initData(struct data* d){ d->write = 0; } -void generate_tab(long* t, int nb){ - int taille_tab = 0; - if(nb == NULL){ - taille_tab = (int)(random()+1)%100; +long* generate_tab(size_t nb, size_t *l){ + long* t; + size_t taille_tab = 0; + if(l == NULL){ + taille_tab = (size_t)(random()+1)%100; } else{ taille_tab = nb; } - - for(int i = 0; taille_tab<taille_tab; i++){ - + t = malloc(sizeof(long)*taille_tab); + memset(t, 0, taille_tab); + *l= taille_tab; + size_t i = 0; + for(i = 0; i<taille_tab; i++){ + long p = (long)(rand()%1000); + t[i] = p; } + + return t; } \ No newline at end of file diff --git a/Algos_1/utils.h b/Algos_1/utils.h index a9ce63273a3c2e8790b1379dae3e50b4c963b5d4..e1bdb07811a3e043a4cde44ffd2507395c730650 100644 --- a/Algos_1/utils.h +++ b/Algos_1/utils.h @@ -18,4 +18,5 @@ struct data { }; int readToTab(long* tab, char* file); -void initData(struct data* d); \ No newline at end of file +void initData(struct data* d); +long* generate_tab(size_t nb, size_t* l); \ No newline at end of file