1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| void extraireTrigrammes(FILE *output, FILE *trigra)
{
unsigned char conversionAvers0[TAILLE_TAB] = {}; // je remap les caractères qui m'intéressent pour pouvoir réduire mon tableau
unsigned char conversion0versA[TAILLE_TAB] = {};
unsigned char c = 'a', c1, c2, c3;
int i, j, k;
// Initialisation des tableaux de conversion: --------------------------
j=0;
for(i=0;i<255;i++) // conversion de 'a' vers 0
{
if(caracteresATraiter(i)) // si on tombe sur un caractère intéressant
{
conversionAvers0[i]=j; // conversion['a'] = 0, conversion['b'] = 1...
j++;
}
}
conversionAvers0['\n'] = j; // je traite \n à part car ça m'embête de le mettre dans caractereATraiter (j'ai d'autres fonctions qui l'utiilisent)
j=0;
for(i=0;i<256;i++) // conversion de 0 vers 'a'
{
if(caracteresATraiter(i) && !isupper(i))
{
conversion0versA[j] = i;
j++;
}
}
conversion0versA[j] = ' '; j++;
// Fin Initialisation des tableaux de conversion: -----------------------
// EXTRACTION
int trigrammes[TAILLE_TAB][TAILLE_TAB][TAILLE_TAB];
fseek(output, 0, SEEK_SET);
while(c != 255) // On parcourt tout le fichier
{
c = (c1=fgetc(output));
if(c != '\n' && c != 255)
{
c = (c2=fgetc(output));
while(c != '\n' && c != 255)
{
c = (c3=fgetc(output));
if(c != '\n' && c != 255)
{
trigrammes[conversionAvers0[c1]][conversionAvers0[c2]][conversionAvers0[c3]]++;
c1 = c2;
c2 = c3;
}
}
}
}
// Stockage dans trigra.txt...
fseek(trigra, 0, SEEK_SET);
for(i=0;i<TAILLE_TAB;i++)
{
fprintf(trigra, "\n");
for(j=0;j<TAILLE_TAB;j++)
{
fprintf(trigra, "\n");
for(k=0;k<TAILLE_TAB;k++)
{
if(trigrammes[i][j][k])
{
fprintf(trigra, "%c%c%c:%5d |",conversion0versA[i], conversion0versA[j], conversion0versA[k], trigrammes[i][j][k]);
}
}
}
}
} |
Partager