harmonize variable names
This commit is contained in:
parent
b745df67f4
commit
7c3e0c1b30
2 changed files with 16 additions and 17 deletions
27
arbre.c
27
arbre.c
|
@ -33,20 +33,20 @@ int listeVersArbre(Liste *liste) {
|
|||
return nombreLettresDansFichier;
|
||||
}
|
||||
|
||||
void assignationCode(Arbre arbre, int codeActuel, int longueur, Entete *lettresListe, int *i, int *longueurTotale) {
|
||||
void assignationCode(Arbre arbre, int codeActuel, int longueur, Entete *enteteListe, int *i, int *longueurTotale) {
|
||||
if (arbre->lettre != '\0') { // si c'est une lettre qu'on regarde
|
||||
lettresListe[*i].lettre = arbre->lettre; // ajout de la lettre
|
||||
lettresListe[*i].code = codeActuel; // assignation de son code
|
||||
lettresListe[*i].longueur = longueur; // longueur du code (ex: 1001 est de taille 4)
|
||||
enteteListe[*i].lettre = arbre->lettre; // ajout de la lettre
|
||||
enteteListe[*i].code = codeActuel; // assignation de son code
|
||||
enteteListe[*i].longueur = longueur; // longueur du code (ex: 1001 est de taille 4)
|
||||
|
||||
*i += 1; // on incrémente de 1
|
||||
*longueurTotale += longueur * arbre->frequence; // incrémente la taille du code à la taille totale finale
|
||||
} else { // si c'est une "mini-racine"
|
||||
longueur++;
|
||||
codeActuel <<= 1; // décalage de bit vers la gauche
|
||||
assignationCode(arbre->gauche, codeActuel, longueur, lettresListe, i, longueurTotale); // appel récursif arbre de gauche
|
||||
assignationCode(arbre->gauche, codeActuel, longueur, enteteListe, i, longueurTotale); // appel récursif arbre de gauche
|
||||
codeActuel |= 1; // copie de bit si nécessaire (porte ou)
|
||||
assignationCode(arbre->droite, codeActuel, longueur, lettresListe, i, longueurTotale); // appel récursif arbre de droite
|
||||
assignationCode(arbre->droite, codeActuel, longueur, enteteListe, i, longueurTotale); // appel récursif arbre de droite
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -61,16 +61,16 @@ void freeArbre(Arbre arbre) {
|
|||
}
|
||||
|
||||
Entete *arbreVersListe(Arbre arbre, int taille, int *tailleTotale) {
|
||||
Entete *lettres;
|
||||
if ((lettres = (Entete*)malloc(taille * sizeof(Entete))) == NULL) { // on alloue la liste qui va contenir nos caractères
|
||||
Entete *enteteListe;
|
||||
if ((enteteListe = (Entete*)malloc(taille * sizeof(Entete))) == NULL) { // on alloue la liste qui va contenir nos caractères
|
||||
printf("Impossible d'allouer de la mémoire supplémentaire (arbreVersListe).\n"); // gestion de l'erreur
|
||||
exit(1);
|
||||
}
|
||||
int i = 0; // initialisation de `i` au début car `assignationCode` est récursif
|
||||
assignationCode(arbre, '\0', 0, lettres, &i, tailleTotale); // on commence avec une racine nulle et une taille de 0
|
||||
assignationCode(arbre, '\0', 0, enteteListe, &i, tailleTotale); // on commence avec une racine nulle et une taille de 0
|
||||
freeArbre(arbre);
|
||||
|
||||
return lettres;
|
||||
return enteteListe;
|
||||
}
|
||||
|
||||
Entete *fichierVersListe(FILE *fichier, int *nombreLettresDansFichier, int *tailleTotale) {
|
||||
|
@ -89,16 +89,15 @@ Entete *fichierVersListe(FILE *fichier, int *nombreLettresDansFichier, int *tail
|
|||
}
|
||||
|
||||
void compression(FILE *entree, FILE *sortie) {
|
||||
/* fclose temporaire pour supprimer les warnings */
|
||||
int nombreLettresDansFichier; // initialisé par `listeVersArbre`
|
||||
int tailleTotale = 0; // taille totale en en bit du fichier en sortie
|
||||
Entete *entete = fichierVersListe(entree, &nombreLettresDansFichier, &tailleTotale);
|
||||
Entete *enteteListe = fichierVersListe(entree, &nombreLettresDansFichier, &tailleTotale);
|
||||
|
||||
// On écrit l'entête du fichier avec la table complète des correspondances
|
||||
enteteVersFichier(entete, nombreLettresDansFichier, tailleTotale, sortie);
|
||||
enteteVersFichier(enteteListe, nombreLettresDansFichier, tailleTotale, sortie);
|
||||
|
||||
// On écrit les données huffman-isée dans le fichier
|
||||
huffmanVersFichier(entree, sortie, entete, nombreLettresDansFichier);
|
||||
huffmanVersFichier(entree, sortie, enteteListe, nombreLettresDansFichier);
|
||||
}
|
||||
|
||||
void decompression(FILE *entree, FILE *sortie) {
|
||||
|
|
6
arbre.h
6
arbre.h
|
@ -37,7 +37,7 @@ void decompression(FILE *entree, FILE *sortie);
|
|||
J'essaie de favoriser l'utilisation de pointeur pour éviter de recopier plus fois la même chose en mémoire.
|
||||
Parcours prefixé de l'arbre.
|
||||
*/
|
||||
void assignationCode(Arbre arbre, int codeActuel, int longueur, Entete *lettresListe, int *i, int *longueurTotale);
|
||||
void assignationCode(Arbre arbre, int codeActuel, int longueur, Entete *enteteListe, int *i, int *longueurTotale);
|
||||
|
||||
// Convertis un arbre (struct Arbre/Liste) en liste (struct Entete).
|
||||
Entete *arbreVersListe(Arbre arbre, int taille, int *tailleTotale);
|
||||
|
@ -46,9 +46,9 @@ Entete *arbreVersListe(Arbre arbre, int taille, int *tailleTotale);
|
|||
Entete *fichierVersListe(FILE *fichier, int *nombreLettresDansFichier, int *tailleTotale);
|
||||
|
||||
// Écrit l'entête avec la table de Huffman dans le fichier.
|
||||
void enteteVersFichier(Entete *lettres, int nombreLettresDansFichier, int longueurTotale, FILE *fichier);
|
||||
void enteteVersFichier(Entete *enteteListe, int nombreLettresDansFichier, int longueurTotale, FILE *fichier);
|
||||
|
||||
// Écrit les données une fois traduite après l'algorithme de Huffman dans le fichier de sortie.
|
||||
void huffmanVersFichier(FILE *entree, FILE *sortie, Entete *listeLettres, int nombreLettresDansFichier);
|
||||
void huffmanVersFichier(FILE *entree, FILE *sortie, Entete *enteteListe, int nombreLettresDansFichier);
|
||||
|
||||
#endif
|
||||
|
|
Reference in a new issue