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