begin process at 2012 05 27 21:16:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > [VC++] COMPRESSION DE HUFFMAN+TUTORIEL

[VC++] COMPRESSION DE HUFFMAN+TUTORIEL


 Information sur la source

Note :
9,2 / 10 - par 5 personnes
9,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Expert Date de création :29/05/2002 Date de mise à jour :23/11/2002 17:17:27 Vu / téléchargé :13 783 / 3 088

Auteur : GoldenEye

Ecrire un message privé
Site perso
Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note

 Description

Compression de Huffman en mode console. 30 pages de tutoriel très très détaillé.
Certes il existe déjà 2 programmes similaires sur ce site mais le premier est mono fichier donc illisible et le deuxième est en prog Windows donc plus complexe à comprendre.
Le zip comprend le projet Visual C++ (Il faut par contre construire l'exécutable) ainsi que le tutoriel au format Word 2000.
Le prog fait environ 450 lignes.


 Conclusion

Toute remarque est la bienvenue.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture TILE MAP EDITOR 2.4
Source avec Zip Source avec une capture CHAT MULTITHREAD
Source avec Zip Source avec une capture ALGORITHME A*
Source avec Zip TRANSFORMÉE DE FOURIER : REPRÉSENTATION GRAPHIQUE [VC++ ET A...
[VC++ ET DJGPP] FLOCON DE VON KOCH AVEC ALLEGRO

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de Galett le 01/06/2002 19:14:56

Merci pour ce tut très sympa, G juste 2-3 p'tites questions, qu'appelles-tu les bits de bourrage(de poids forts ?(sens informatique voyons !)Overflow ?)

et sinon, si tu pouvais expliquer un peu la fct°
[ temp+=((tableau[c].codeHuffman)>>(tableau[c].nbits-1-j))&1;//une formule à la GoldenEye...],
G pas eu le tps de décortiquer entièrement ton source, je passe des exams en ce moment, mais je verrai ça après.

Sinon, le code marche super, mais un autre truc G recompressé un fichier déja compressé avec ce code(d'ailleurs ratio 1: 80% ratio2: 54% !!,et 3 : 15% :o)

mais pour décompressé (donc 3 fois de suite) ca marche plus, doit y avoir un ti prob, vàla si ca peut t'aider pour ton prob avec les gros fichier(10Mo)

PS:pour info, c t un bmp que G utilisé pour avoir de bons résultats même après une première compression

Commentaire de GoldenEye le 02/06/2002 20:52:23

1/ Bits de bourrage: le dernier caractère peut n'occuper que 4 bits par exemple. Que faire des quatre derniers bits pour former un octet ? Et bien il faut les remplir avec ce que l'on veut. C'est l'opération dite de bourrage. En réalité, le pb ne s'est pas posé avec Huffman dans la mesure où on bourrait avec n'importe quoi mais on sauvegardait le nombre de caractères encodés.
2/on ajoute à temp 0 ou 1 selon que le bit numéro "nbits-1-j" de tableau[c] est égal à 0 ou 1
Ex
j=1
tableau[c]=5 soit 100 en binaire
nbits=3
temp=2
tableau[c].nbits-1-j=1 ->on regarde le bit 1 de tableau[c] qui est 0
Donc temp=temp+0
C'est clair ?
3/pour les compressions successives, ça marche dans certains cas. Mais je n'ai jamais eu de pb à la décompression (n'oublie pas de faire trois décompressions à la suite). Envoie moi le fichier
4/ pour les très gros fichiers, le pb est lié au fait que les int sont sur 4 octets et que certains codes dépassent cette valeur de 2^32 (c'est un hypothèse)
5/Moi aussi j'ai des exams !

Commentaire de GoldenEye le 05/06/2002 13:29:51

Petit bug: la décompression du dernier caractère est fausse 1 fois sur 3. je n'arrive pas à corriger l'erreur. Un pastis à celui qui me dit ce qu'il faut changer

Commentaire de bobbyf le 23/11/2002 16:57:48

mais il ny'a pas de huffman.exe ? comment le faire ?

Commentaire de GoldenEye le 23/11/2002 17:16:25

Mais il faut compiler le source ! M'enfin si tu le désires, je vais uploader l'exe aussi

Commentaire de GoldenEye le 23/11/2002 17:19:48

voilà la mise à jour a été faite

Commentaire de bobbyf le 24/11/2002 13:04:48

je me suis mal exprime .je sais qu'il faut le compiler et j'obtiens le meme huffman.exe que le tien. mais apres que faire pour essayer de compresser un fichier ? quand j'execute huffman.exe ap artir de l'inivte de commande j'obtiens comme   message comme 'huffman.exe' n'est pas reconu en tant que commande interne .que faire ? toi tu fais comment? merci de me repondre  

Commentaire de GoldenEye le 24/11/2002 13:40:17

Ah je n'avais pas compris:
Ouvre une fenêtre DOS et va dans le répertoire de l'exécutable huffman.exe
huffman -c source.ext destination.ext pour compresser
huffman -d source.ext destination (sans l'extension) pour décompresser.
Lis la doc, il y a un exemple à la fin

Commentaire de bobbyf le 24/11/2002 17:36:02

ben j'ai windows xp et j'ai pas dos mais l'invite de commande et quand je tape juste huffman.exe ,j'ai le message d'erruer que je t'ai cite precedemment

Commentaire de GoldenEye le 24/11/2002 20:21:57

alors là je ne sais pas...

Commentaire de Galett le 01/12/2002 01:52:05

hummm je crois ke XP émule les prog dos(G po XP, donc pas sur) mais normalement tu devrais qd même pouvoir passer des param au prog...

Commentaire de LordBob le 30/12/2002 16:07:52

merci pour ta contribution... je la prend sur le champ...

Commentaire de Nebula le 08/06/2003 15:02:29

Salut !

Je n'ai pas Word 2000 => Pas moyen de lire le tutorial, qui m'aiderait certainement à comprendre la source... Peux-tu me le convertir ? (si possible en HTML, sinon en RTF, j'utilise que Wordpad...)

Merci d'avance ;)

Commentaire de soporifik27 le 15/12/2003 20:06:22

ou en latex sa pourrai etre cool ossi ;-) merci
paske word... j'ai pô non plu

Commentaire de nhs le 02/03/2004 11:09:06

Salut !
merci pour ton code et le tut
g un peu de mal a comprendre la partie rincipale de la compression

while(compteur<taille+1)
{
c=bufferfichier[compteur-1];
temp+=((tableau[c].codeHuffman)>>(tableau[c].nbits-1-j))&1;
if(i>=SIZEEX&&j>=(tableau[c].nbits-1))


pourait tu m'expliquer les tests (if)
merci

Commentaire de psycho le 12/06/2004 19:31:48

je ne comprends pas à quoi sert la fonction chercher dans le code de huffman, arbre.cpp
pourrais -tu m'éclairer de ta lumière ???

sinon, bo boulot, la prog est pas mal du tout....
je met 9/10

Commentaire de victorcoasne le 07/07/2004 18:38:51

Pour bobbyf > Tu copies huffman.exe dans C:
Tu lance l'invite MS-DOS et tu tape pour compresser :
C:\huffman -c source.ext destination.ext
Pour décompresser :
C:\huffman -d source.ext destination

exemple tu as essai.txt sur C:

Tu tape pour le compresser : C:\huffman -c C:\essai.txt C:\essai.txt.compres
Pour le décompresser :
C:\huffman -d C:\essai.txt.compres C:
cela devrait marcher

Le créateur du site www.jscv.com

Commentaire de coucou747 le 18/07/2004 01:16:48 administrateur CS

eh les gars, faut pas abuser, quand on a pas word, et que l'on ne veut pas payer une licence a microsoft, on télécharge open ofice.org, c'est gratuit!
Huffman, c'est assez performant, bien joué!!!
Il y avait un login qui l'expliquais, j'avais compris comment il marchait, mais jamais réussi a créer mon prog (et j'ai eu la fleme de m'y metre plus de trois heures...)
Bien joué, même si ça sert a rien car on a bzip2 qui l'inclut...

Commentaire de kokoook le 14/05/2005 16:58:58

bonjour en fait je compile ton code et sa marche mais pour l'executer sa me donne ca :

Linking...
Huffman.obj : error LNK2001: unresolved external symbol "void __cdecl effacerListe(struct element *)" (?effacerListe@@YAXPAUelement@@@Z)
Huffman.obj : error LNK2001: unresolved external symbol "void __cdecl coderA(struct noeud *,struct caractere *,int,int)" (?coderA@@YAXPAUnoeud@@PAUcaractere@@HH@Z)
Huffman.obj : error LNK2001: unresolved external symbol "struct element * __cdecl delister(struct element *,struct noeud *)" (?delister@@YAPAUelement@@PAU1@PAUnoeud@@@Z)
Huffman.obj : error LNK2001: unresolved external symbol "struct noeud * __cdecl fusionner(struct noeud *,struct noeud *,unsigned char,int)" (?fusionner@@YAPAUnoeud@@PAU1@0EH@Z)
Huffman.obj : error LNK2001: unresolved external symbol "int __cdecl nombreElementsListe(struct element *)" (?nombreElementsListe@@YAHPAUelement@@@Z)
Huffman.obj : error LNK2001: unresolved external symbol "struct element * __cdecl enlister(struct element *,struct noeud *)" (?enlister@@YAPAUelement@@PAU1@PAUnoeud@@@Z)
Huffman.obj : error LNK2001: unresolved external symbol "struct noeud * __cdecl nouvelArbre(unsigned char,int,int)" (?nouvelArbre@@YAPAUnoeud@@EHH@Z)
Huffman.obj : error LNK2001: unresolved external symbol "enum Booleen __cdecl chercher(unsigned int,unsigned int,struct noeud *,unsigned char *)" (?chercher@@YA?AW4Booleen@@IIPAUnoeud@@PAE@Z)
Huffman.obj : error LNK2001: unresolved external symbol "void __cdecl reconstruireArbre(struct noeud * *,unsigned int,unsigned int,unsigned char)" (?reconstruireArbre@@YAXPAPAUnoeud@@IIE@Z)
Debug/Huffman.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.

Huffman.exe - 10 error(s), 0 warning(s)

je sais pas quoi faire aidez moi svp !!!!!!!

Commentaire de kokoook le 15/05/2005 13:09:21

en fait je suis pas un expert en c++ svp comment contre construire l'exécutable ?
merci

Commentaire de JCDjcd le 06/08/2006 00:54:16

il manque des liberations memoires (des arbres surtout, et d'un buffer)
sinon un chose me chagrine :
fwrite(&nbdifferents,SIZE_UC,1,desti);//nombre de caratères différents (1 octet)

le probleme c'est que si le nombre de difference est 256, comme c'est code sur un unsigned char, ca enregistre sur un octet 0x00, donc il faut deux solutions : soit tu le codes sur 2 octets, soit tu enregistres (nbdifferents-1) au lieu de nbdifferents


 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales