forked from menault/2026_TD1_DEV51_Qualite_Algo
Optimise la normalisation avec une table de conversion
This commit is contained in:
+18
-17
@@ -85,18 +85,6 @@ void ajouter(char *dest, const char *src, size_t *position)
|
||||
*position = fin;
|
||||
}
|
||||
|
||||
char en_minuscule(char c)
|
||||
{
|
||||
if (c >= 'A' && c <= 'Z')
|
||||
return c - 'A' + 'a';
|
||||
return c;
|
||||
}
|
||||
|
||||
int est_lettre(char c)
|
||||
{
|
||||
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* Génération du texte */
|
||||
/* ------------------------------------------------------------------------ */
|
||||
@@ -210,12 +198,25 @@ char **decouper_lignes(const char *texte, int *nb_lignes)
|
||||
|
||||
void normaliser_ligne(char *ligne)
|
||||
{
|
||||
for (int i = 0; ligne[i] != '\0'; i++) {
|
||||
if (est_lettre(ligne[i]))
|
||||
ligne[i] = en_minuscule(ligne[i]);
|
||||
else
|
||||
ligne[i] = ' ';
|
||||
static char conversion[256];
|
||||
static int initialisee = 0;
|
||||
|
||||
if (!initialisee) {
|
||||
for (int c = 0; c < 256; c++) {
|
||||
if (c >= 'A' && c <= 'Z')
|
||||
conversion[c] = (char)(c - 'A' + 'a');
|
||||
else if (c >= 'a' && c <= 'z')
|
||||
conversion[c] = (char)c;
|
||||
else
|
||||
conversion[c] = ' ';
|
||||
}
|
||||
conversion[0] = '\0';
|
||||
initialisee = 1;
|
||||
}
|
||||
|
||||
/* L'indice non signé couvre les 256 valeurs possibles d'un octet. */
|
||||
for (int i = 0; ligne[i] != '\0'; i++)
|
||||
ligne[i] = conversion[(unsigned char)ligne[i]];
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
Reference in New Issue
Block a user