Télécharger le zip
Salut,J'ai téléchargé ton projet et je l'ai recompilé. La compression fonctionne correctement mais la décompression plante. L'exécutable fournit fonctionne correctement mais apparement il y a un problème avec les sources. As tu une solution ?
Je vais te faire une reponse facile mais qui est pourtant vraichez moi il marche parfaitement.Tu as essayer de compresser quoi ?Quel Taille ?JM
Je viens de réussir à le faire fonctionner sous Visual C++ 6 mais le problème persiste sous Dev C++. Désolé de t'avoir embêté. Merci pour le source qui a un bon rendu, environ un facteur 2 sur un fichier texte de 8Mo.
ouaou et keske ta mis dans ton fichier texte ??????
J'ai généré un fichier texte à partir d'un catalogue de produits. Donc il y avait un code produit, le prix, l'emplacement du produit, le libellé et les diverses promotions. Une ligne égale un produit et il y avait 10000 lignes. Donc 10000 produits. Le fichier pesé 8Mo. J'ai obtenu un taux de compression d'environ 0.5 car le fichier pesé en sorti 3.9Mo.Voila tout !!!
En effet la décompression ne marche pas (et je suis surpris de la souplesse de Visual C++, quelle merde..) puisque que les erreurs viennent de tableaux mal dimensionnés pour lesquels on essaye d'acceder à des index du supérieur à la taille de ces tableaux : il y a tout d'abord le tableau bin qui devrait etre de taille 8 au lieu de taille 7 et puis ensuite le tableau arbre_code qui n'est evidement pas de la bonne taille dans la boucle :for ( x = 0;x <= cpt_arbre_code;x++) { dec_bin(fgetc(fic_lec)); for (y = 0;y <= 7;y++) arbre_code[8*x+y] = bin[y];}qui precede un : taille_arbre_code = (8*cpt_arbre_code+8)-1;(qu'on pourrait reécrire : )taille_arbre_code = (9*cpt_arbre_code)-1; ...Moi qui m'étais emmerdé à virer tout ce qu'il y avait de C++ dans le code pour pouvoir le compiler avec de simples compilateurs C... Enfin la mémoire alloué (avec les new) n'est pas libéré, ce qui rend le code inutisable dans d'autres programmes (tout comme il faut alors eviter de compresser/decompresser) plusieurs fichiers successivement avec le .exe final. Bref j'étais content de trouver un code qui me semblait assez concis pour pouvoir le compiler dans une tite appli , je vais finalement devoir me rabbatre sur la zlib (la dll fait tout de même 34k) à moins que je n'ai pas trop d'emmerdes avec la libbzip2 sous windoze...
c'est difficile!!!!
svp esce que klk1 peut m'aider??!!en m'envoyant des informations sur la décompression de huffman
Voila un site pour comprendre les bases déja :http://tcharles.developpez.com/Huffman/
Super!Très Bien Commenté et la structure du Code! Mmmmh!(J'adore)Bravo9/10PS: Moi, J'ai pas de problème avec la décompilation...
Merci pour le commentaire ca fais vraiment super plaisir :)@++
10/10 ... n'importe quoi, on aura tout vu.Je ne comprend pas celui qui met 10/10 vu les problemes suivants :* deux fonctions 'val', je sais c'est pas un probleme en C++, la signature fait la difference, mais la le boulot des deux fonctions est different, donc pour plus de clarte il faut deux noms differents pour eviter que se perde* gros probleme de liberation memoire, les arbres ne sont pas liberes, et les piles ne sont pas toujours videes !!* beaucoup trop de variables globales, (cpt_arbre_code,nb_char_dif,nb_lettre par exemple) dont l'initialisation n'est faite d'une fois au debut du programme, or si je veux utiliser la compression plus d'une fois dans un programme, la compression plante violemment car les variables n'ont pas ete reinitialisees* BUG : dans la reconstruction, "pile" doit etre initialise a NULL* BUG : dans depiler, le teste n'est pas "p != NULL" mais plutot "(*p) != NULL"* lorsque le fichier est uniforme (i.e. le meme caractere a chaque fois dans le fichier de depart) alors il y a une bloc memoire qui n'est pas libere
Merci pour le code, j'ai essayé de faire le projet moi même, mais j'avais un problème au niveau de construction de l'arbre ,mais avec ce code, j'ai bien trouvé la solution, encore merci.
Salut, je me réinterresse a la compression, et je cherchais a me remémorrer le huffman. Bien joué pour le code.Cependant y'a 2 truc pour améliorer:- le calcul de puissance : si tu ne fait que des puissance de 2 tu peut éviter la boucle (si tu regarde en asm, ça bouffe vite des instructions et de la meme) tu peut direct utiliser un décalage : return 1 << position; ---> ça fait 2^position (permet aussi de positionner un bit)- L'algorithme est le huffman statique en 2 passes, si tu veut faire du temps réelle, faudrait passer en dynamique, le truc que je cherchais justement, c'est la manière de se passer de la création de l'arbre a chaque évennement ajouté... la je vois pas.Bon courage pour la suite
Merci beaucoup pour le programme.ton travail était impressionnant...
bonsoir j'ai telechrgé votre programme parce que je l'ai comme projet de fin d'etude mais je voulais vous demander est ce que c'est possible de m'expliquer que fait les fonctions correpondance_code,ecriture_lettre,nouveau_code et nouveau_code et j'aimerai bien comprendre qu'est ce qu'on ecrit dans le fic_ecrje souhaite avoir une reponse le plus vite possible(au max 3jours)merci d'avance
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 903 497 membres 65 nouveaux aujourd'hui 16 195 membres club