Citation:
Bien sûr que non...
Ca dépend de la répartition des fréquences et du nombre de caractères réellement présents dans le fichier source.
L'arbre n'est pas équilibré, et de plus, la séparabilité des codes impose que pour coder 256 caractères, tu auras besoin de plus de 8 bits pour certaines valeurs. Ne confonds pas un arbre de codes de Huffman avec un simple arbre binaire, ce n'est pas du tout la même chose.
ok je savais pas que l'arbre etait pas equilibré .... le gros de mes probs vient surement de la alors ... les codes ne doivent pas etre separées ....
Je vais mettre mon M a 64 alors :)
Citation:
Justement, non : la récursivité implique que toutes les variables sont locales, et certainement pas globales !!
Si ça ne marche pas avec un return, c'est que tu as mal construit ta fonction. Déjà, rien qu'avec les malloc non-vérifiés et non-libérés que tu fais, ça ne peut pas marcher correctement. Tu n'as pas besoin d'allouer dynamiquement, il te suffit de déclarer un tableau "CODE HuffCodes[256]" et de taper là-dedans pour construire tes codes, c'est la manière habituelle pour les obtenir de manière efficace. Toi, tu alloue un nouveau code à chaque itération et en plus, tu écrase le code précédent !!!
Ensuite, tu parcours ton arbre en profondeur et tu construit chaque code lorsque tu arrives à une feuille.
j'ai enlevé les malloc apres ton conseil j'ai plus de pointeur now mais bon je vais refaire cette fonction dirfferement je vais essayer
Citation:
Tu les as mis dans les boucles "for", j'espère ? Parcequ'avant ou après, ça n'a aucun intérêt. Vérifie aussi (toujours par assertions) tes "taille_pref". A propos, il faudra mettre "assert(i<M)" plutôt, désolé de cet oubli.
tinkiete elles sont bien dans les for
Citation:
Il y a des fois où j'ai l'impression que tu ne lis pas complètement ce que je t'écris... C'est assez désagréable.
dsl....je pense que now tu ma filé un max dinfos je vais essayer de bien bosser
merci encore