Bonjour à tous,
Dans le cadre d'un exercice de cours, je suis amené à créer un programme de compression/décompression selon l'algorithme de Huffman.
Mon problème est le suivant, le programme est quasi fonctionnel, sauf que ALEATOIREMENT le fichier de destination ne retranscrit pas de manière
uniforme le fichier source (ajout de caractère en fin de fichier de type .txt...). Cela vaut de même pour les fichiers de type bitmap qui sont retranscrits
en ayant des octets en plus, une différence minime, mais une différence quand même.
J'ai utilisé des map pour le calcul des fréquences et la construction de l'arbre et je veux rester dans l'optique de mon implémentation, sauf que j'aimerais que cela soit à 100% fonctionnel, et je n'arrive pas à trouver l'erreur.
Plusieurs choses qui me paraissent étranges :
-Les octets en plus dans mon fichier de destination.
Est-ce un problème au niveau de la construction de l'arbre? Pourtant mes fonctions d'affichages des maps, montrent que j'ai correctement créer l'arbre
-Pourquoi cela influence-t-il EXCLUSIVEMENT QUE la fin du fichier texte quand il s'agit d'un fichier texte.
-Lors de l'utilisation de la fonction
La map des arbres devrait avoir le même ordre que celle de fréquences, cependant ce n'est pas le cas, (utilisation des fonctions d'affichage)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void createForest(mapFq & mapFq, mapFrt & mapFrt){ map<unsigned char,unsigned>::iterator it = mapFq.begin(); while(it != mapFq.end()){ HuffTree ht = treeFromFreq(it->first); mapFrt.insert(std::make_pair(ht, it->second)); ++it; } }
Pour tester l'executable, après l'avoir compilé, il faut le faire via le cmd dans le Debug,
Dans mon cas
cd Desktop/Huff/bin/Debug
compression = Desktop/Huff/bin/Debug>huffman -c test.txt huff
décompression = Desktop/Huff/bin/Debug>huffman -d huff test2.txt
Cela devrait marcher sur les images bitmap aussi, la différence d'octet est plus prononcée.
Voila si vous pouviez m'aiguiller dans la résolution de mon problème je vous serais reconnaissant.
Merci d'avance et merci pour le tuto sur Huffman qui m'a beaucoup aidé!
Huff.zip
Partager