Compression de huffman

0/5 (6 avis)

Vue 11 470 fois - Téléchargée 2 221 fois

Description

Bon alors je vous poste un autre (et oui) code pour l'algorithme de compression de Huffman.
J'ai essayer au possible de clarifié le code, et celui ci est ecrit en C.
J'ai intégrer une gestion des erreurs.

Mode d'emploi : pour compresser tapez : huffman -c nom_fichier le programme crée un .huff
pour decompresser : huffman -x nom_fichier.huff

G aussi mis un petit makefile pour faciliter la compilation

Codes Sources

A voir également

Ajouter un commentaire Commentaires
imen_jaouani
Messages postés
1
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
22 novembre 2007

22 nov. 2007 à 11:52
j'ai utilisé ton code pour faire des calculs de performances sur
les codeurs entropiques : Huffman et d'autres codeurs .
donc j'ai modifier tes sources pour avoir en entrée une sequence de symboles ; c'est le cas le plus general ; à partir de ces symboles , les codes d'huffman sont générés , la séquences est codée , transmis dans un canal bruité et puis décode .

j'ai eu des problème lors du décodage : --> les codes d'huffman
ne sont pas correctement générés, les codes sont pré-fixés entre eux par exemple 01 et 01010101


j'ai besoin d'aide merci
camille2005
Messages postés
1
Date d'inscription
dimanche 11 décembre 2005
Statut
Membre
Dernière intervention
26 novembre 2006

26 nov. 2006 à 18:45
Bonjour,

Je suis débutant en langage C, et je m'intéresse à la compression de Huffman. Je suis curieux de voir le résultat de ce code. Je n'arrive pas à le faire marcher sur devC++. Je pense que je mets mal les différents fichiers de code (main.c,huffman.c,...) en relation.
QQun pourrait-il me dire quelle est la marche à suivre pour le faire marcher avec devC++?
Merci
Camille
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
3 août 2006 à 15:03
Autre petit BUG courant dans les sources Huffman :
probleme avec les fichiers "uniformes", i.e. toujours la meme lettre
l'arbre est reduit a sa racine, donc comme le code n'a pas prevu
ce cas la, le pogramme excute "NULL->fils_gauche", ce qui est genant.

Le cas uniforme est rare, car inutile, cependant le programme de compression doit le comprimer, c'est pas tres difficile ...
oim09
Messages postés
4
Date d'inscription
mercredi 3 novembre 2004
Statut
Membre
Dernière intervention
3 août 2006

3 août 2006 à 11:26
Tu as raison, le debugge ca existe...
J'avais écris ce code a l'époque ou j'apprenais a programmer en C, il est bien loin d'etre parfait, et effectivement ne marchais pas correctement, mais cela faisai tellement longtmeps que je l'avais oublié le bougre.

Merci a toi d'avoir signaler ce bug ;)
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
2 août 2006 à 21:30
Honte a celui qui a mis 10/10 :
je suis en train de regarder toutes les sources Huffmans de ccpfrance,
j'ai etudie la tienne, et je doit dire que je suis enerve, car deja il n'y a pas UN free() dans tes sources, ceci est une honte en soi !
Cependant ton programme ne marche absolument pas, j'ai essayer de compresser un fichier .c (comme blackjack3) et le fichier reconstuit etait altere, pourtant ton programme marche pour un fichier .txt

Alors j'ai fais le boulot a ta place (1h !!), voila le bug :
tu bidouilles dans l'ecriture de la table : tu mets un '\' pour la separtion, sauf que dans un fichier .c, il y a disons beaucoup beaucoup de slash (je te laisse deviner pourquoi ...) donc dans la tableau il y a le caractere '\', et donc dans mon fichier il y avait 96 caracteres differents (le 62eme etant le '\'), or il ne lit que 61 caracteres !!

Donc voila, je pousse un coup de geule, le DEBUGGGE ca existe !!!!!!
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.