diff --git a/analyseur.c b/analyseur.c index 1192fd0..218031e 100644 --- a/analyseur.c +++ b/analyseur.c @@ -102,7 +102,7 @@ int est_lettre(char c) /* Génération du texte */ /* ------------------------------------------------------------------------ */ -static const char *MOTS_VIDES[] = { +static char *MOTS_VIDES[] = { "le", "la", "les", "un", "une", "des", "du", "de", "et", "ou", "mais", "donc", "or", "ni", "car", "que", "qui", "quoi", "dont", "ou", "a", "au", "aux", "en", "dans", "par", "pour", "sur", "sous", "avec", @@ -226,12 +226,44 @@ typedef struct { int occurrences; } Entree; + + + +int doit_bouger(const char *a, const char *b) +{ + return comparer(a, b) > 0; +} + + +void trier_mots_vides() +{ + for (int i = 0; i < NB_MOTS_VIDES - 1; i++) { + for (int j = 0; j < NB_MOTS_VIDES - 1 - i; j++) { + if (doit_bouger(&MOTS_VIDES[j], &MOTS_VIDES[j + 1])) { + char tmp = *MOTS_VIDES[j]; + MOTS_VIDES[j] = MOTS_VIDES[j + 1]; + MOTS_VIDES[j + 1] = &tmp; + } + } + } +} + + + int est_mot_vide(const char *mot) { - for (int i = 0; i < NB_MOTS_VIDES; i++) { - if (egales(mot, MOTS_VIDES[i])) + int borne_min = 0; + int borne_max = NB_MOTS_VIDES; + while(borne_min < borne_max){ + int i = (borne_max - borne_min)/2 +borne_min; + if (egales(mot,MOTS_VIDES[i])) return 1; + if (comparer(mot,MOTS_VIDES[i]) > 1) + borne_min = i; + else + borne_max = i; } + return 0; } @@ -403,6 +435,7 @@ double racine(double x) int main(void) { + trier_mots_vides(); char **vocab = generer_vocabulaire(); char *texte = generer_texte(vocab, NB_MOTS_TEXTE);