dichotomie

This commit is contained in:
2026-10-07 12:04:01 +02:00
parent 6165b37b51
commit 19d830336b
+36 -3
View File
@@ -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);