From 4dd6ef05224a94c81a790951f7d51dfe4306a179 Mon Sep 17 00:00:00 2001 From: "thibaud.la_riviere-gillet" Date: Sat, 16 Dec 2023 13:44:16 +0100 Subject: [PATCH] tri fusion sur des chaines de char --- srcs/atomes.c | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/srcs/atomes.c b/srcs/atomes.c index 54ef156..b9b7c91 100644 --- a/srcs/atomes.c +++ b/srcs/atomes.c @@ -1,7 +1,8 @@ -#include "../includes/recherche.h" -#include "../includes/structures.h" +#include +#include +#include -void fusion(int R[], int tR, int S[], int tS, int T[]) +void fusion(char *R[], int tR, char *S[], int tS, char *T[]) { int i; int j; @@ -10,9 +11,9 @@ void fusion(int R[], int tR, int S[], int tS, int T[]) i = 0; j = 0; k = 0; - while (i < tR && j < tS) + while (i < tR && j < tS) { - if (R[i] < S[j]) + if (strcmp(R[i], S[j]) < 0) { T[k] = R[i]; i++; @@ -24,14 +25,12 @@ void fusion(int R[], int tR, int S[], int tS, int T[]) } k++; } - while (i < tR) { T[k] = R[i]; i++; k++; } - while (j < tS) { T[k] = S[j]; @@ -40,10 +39,10 @@ void fusion(int R[], int tR, int S[], int tS, int T[]) } } -void copy(int T[], int i, int j, int R[]) +void copy(char *T[], int i, int j, char *R[]) { int k; - + k = 0; while (i < j) { @@ -53,15 +52,15 @@ void copy(int T[], int i, int j, int R[]) } } -void triFusion(int T[], int tlog) +void triFusion(char *T[], int tlog) { - int *R; - int *S; + char **R; + char **S; if (tlog <= 1) return; - R = (int *)malloc(sizeof(int) * (tlog / 2)); - S = (int *)malloc(sizeof(int) * (tlog - tlog / 2)); + R = (char **)malloc(sizeof(char *) * (tlog / 2)); + S = (char **)malloc(sizeof(char *) * (tlog - tlog / 2)); if (!R || !S) exit(1); copy (T, 0, tlog / 2, R); @@ -69,27 +68,28 @@ void triFusion(int T[], int tlog) triFusion (R, tlog / 2); triFusion (S, tlog - tlog / 2); fusion (R, tlog / 2, S, tlog - tlog / 2, T); + free(R); free(S); } -/* -int main(void) +int main(void) { - int tab[10] = {10, 0, 2, 15, 7, 5, 68, 1, 7, 8}; - int tlog = 10; - int i; - + char *tab[5] = {"banana", "apple", "orange", "grape", "cherry"}; + int tlog = 5; + int i; + printf("Avant le tri : \n\t"); for (i = 0; i < tlog; i++) - printf("%d, ", tab[i]); + printf("%s, ", tab[i]); triFusion(tab, tlog); printf("\nApres le tri : \n\t"); for (i = 0; i < tlog; i++) - printf("%d, ", tab[i]); + printf("%s, ", tab[i]); printf("\n"); - return (0); + + return 0; } -*/ +