diff --git a/README.md b/README.md index 0a8ef31..114549f 100644 --- a/README.md +++ b/README.md @@ -41,22 +41,17 @@ 1. **GESTION DES FICHIERS** - ~~Structure Gérer les échanges avec le disque, mémorisant notamment l’état des échanges en cours~~ - ~~Fonction Ouvrir un fichier binaire en lecture ou écriture~~ - - Fonction Ecrire un bit dans un fichier binaire - - ***Faite mais à tester*** - - Fonction Lire un fichier binaire - - ***En cours*** - - Fonction Fermer un fichier + - ~~Fonction Ecrire un bit dans un fichier binaire~~ + - ~~Fonction Lire un fichier binaire~~ + - ~~Fonction Fermer un fichier~~ 2. **ARBRE DE CODAGE** - ~~Fonction Fréquence d'apparition des caractères dans un fichier~~ - - *Tri à faire pour les occurences des caractères(Quicksort)*~ - - ***En cours*** - - Implémentation de l'algorithme de construction de l'arbre de codage (Module Arbres_Binaires) - - ***En cours*** - - *Tri par insertion* - - ***En cours*** + - ~~Implémentation de l'algorithme de construction de l'arbre de codage (Module Arbres_Binaires)~~ 3. **COMPRESSION** - Fonction de compression d'un fichier texte dans un fichier binaire + - Récupération du codes des caractères + - En cours 4. **DECOMPRESSION (EXTRACTION)** - Fonction d'extraction d'un fichier texte depuis un fichier compressé diff --git a/main_compress.c b/main_compress.c index 7ba1108..ed43027 100644 --- a/main_compress.c +++ b/main_compress.c @@ -2,7 +2,7 @@ #include "arbre_de_codage/arbre_binaire.c" #define ASCII_EXT 256 -void huffman(arbre T[], int n); +arbre huffman(arbre T[]); void frequence(arbre T[], FILE *file); void tri_tab(arbre T[],int n); void afficher_tab(arbre T[], int n); @@ -37,7 +37,7 @@ int main(int argc, char **argv){ arbre huff; printf("Huffman : \n"); - //huff = huffman(T); + huff = huffman(N); printf("Arbre :\n"); return 0; } @@ -95,15 +95,28 @@ void afficher_tab(arbre T[], int n){ } } -void huffman(arbre T[],int n){ +arbre huffman(arbre T[]){ // Création de l'arbre de codage de Huffman en considérant une liste avec les fréquences d'apparition des caractères ordonnée croissante + + // récupérer les deux plus petits poids (cf : deux premieres occurences) + arbre H = malloc(sizeof(arbre)); + H=creer_arbre_vide(); int i; + i=0; while(T[i]->poids==-1){ i++; } - // récupérer les deux plus petits poids (cf : deux premieres occurences) - if(compteur_tab(T,ASCII_EXT)!=1){ - arbre tmp=creer_feuille(-,T); - + int Index; + Index=i; + while(Index<(ASCII_EXT-1)){ + arbre tmp=malloc(sizeof(noeud*)); + tmp->fils_gauche=T[Index]; + tmp->fils_droit=T[Index+1]; + tmp->poids=T[Index]->poids +T[Index+1]->poids; + T[Index+1]=tmp; + printf("%d\n",tmp->poids); + Index++; + tri_tab(T,ASCII_EXT); } + return T[Index]; } \ No newline at end of file