forked from menault/2026_TD1_DEV51_Qualite_Algo
Optimise la fonction d'analyse des bigrammes en réduisant les vérifications et en normalisant les lignes
This commit is contained in:
+14
-4
@@ -373,7 +373,8 @@ double ecart_type_longueur(const Entree *table, int n, double moyenne)
|
||||
}
|
||||
|
||||
/* Recherche du bigramme de lettres le plus fréquent, avec en bonus la
|
||||
* troisième lettre qui le suit le plus souvent. */
|
||||
* troisième lettre qui le suit le plus souvent.
|
||||
* Les lignes doivent être normalisées : lettres 'a' à 'z' ou espaces. */
|
||||
void analyser_bigrammes(char **lignes, int nb_lignes,
|
||||
char *meilleur, int *occ_meilleur)
|
||||
{
|
||||
@@ -381,9 +382,18 @@ void analyser_bigrammes(char **lignes, int nb_lignes,
|
||||
|
||||
for (int l = 0; l < nb_lignes; l++) {
|
||||
const char *s = lignes[l];
|
||||
for (int i = 0; s[i] != '\0' && s[i + 1] != '\0' && s[i + 2] != '\0'; i++) {
|
||||
if (est_lettre(s[i]) && est_lettre(s[i + 1]) && est_lettre(s[i + 2]))
|
||||
trigrammes[s[i] - 'a'][s[i + 1] - 'a'][s[i + 2] - 'a']++;
|
||||
int avant_dernier = -1;
|
||||
int dernier = -1;
|
||||
for (int i = 0; s[i] != '\0'; i++) {
|
||||
if (s[i] == ' ') {
|
||||
avant_dernier = dernier = -1;
|
||||
continue;
|
||||
}
|
||||
int lettre = s[i] - 'a';
|
||||
if (avant_dernier >= 0)
|
||||
trigrammes[avant_dernier][dernier][lettre]++;
|
||||
avant_dernier = dernier;
|
||||
dernier = lettre;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user