Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Construire tableau code binaire des caractères avec l'arbre de Huffman [ Archives / Au secours ] (lordvan)

lundi 17 avril 2006 à 13:39:32 | Construire tableau code binaire des caractères avec l'arbre de Huffman

lordvan

Bonjour à tous,
voilà, je suis en train d'essayer de faire une fonction de parcours d'arbre de huffman. Cette fonction a pour rôle de construire le code de chaque caractère. Sachant que l'arbre a déja été construit préalablement, cette fonction parcourt l'arbre de sa racine jusqu'aux feuilles (qui sont les caractères), quand elle va vers la gauche de l'arbre, elle mets un 1 dans un tableau d'entiers, ou un 0 si elle va à droite. Ce tableau s'incrémente d'une case à l'aide d'un realloc à chaque fois que l'arbre "descend d'un étage". Donc, au final, la fonction de parcours d'arbre, ressort un tab de code de 2 lignes et de 256 colonnes, càd que chaque caractère a un entier qui lui est associé. Cet entier a la particularité d'être composé que de 0 ou de 1. Une fonction externe s'occupera d'écrire cet entier en codage binaire dans un fichier.
Ma fonction arbre utilise une fonction annexe qui a pr but de construire l'entier code. On a besoin de cette fonction car sans elle, code est un tableau donc chaque case a un entier. Mais ce que l'on veut, c'est que chaque entier des cases constitue un seul et unique entier. J'utilise alors un pile de nombre pr reconstituer ce nombre.

Donc j'ai besoin de votre aide pour corriger cette fonction de parcours d'arbre car ça fait 6heures que je suis dessus et je ne trouve pas la solution. Voici mes fonctions :

int Construction_code(int *code, int nb_entier){
int i,k;
pel p=NULL;
int val;
int coef=1;
int res=0;

for(i=0;i<nb_entier;i++){
    p=empiler(p,code[i]);
    }
while(p!=NULL){
    p=depiler(p,&val);
    res=res+val*coef;
    coef=coef*10;
    }
printf("l'entier du code est %i \n", res);
return res;
}


   
void parcours_arbre (pnoeud arbre, int tab_code[256], int *code,int nb_entier){
int i;
int h=0;
if((arbre->fg=NULL)&&(arbre->fd=NULL)){
    tab_code[arbre->c]=Construction_code(code,nb_entier);
    nb_entier=0;
    }   
else
    if(arbre->fg){
            nb_entier++;
            code[nb_entier]=0;
            parcours_arbre (arbre->fg, tab_code,realloc(code,sizeof(int)),nb_entier);}
    else{
            if(arbre->fd){
            code[nb_entier]=1;
            parcours_arbre (arbre->fd,tab_code,realloc(code,sizeof(int)),nb_entier);
            }
    }
}


UN grand merci d'avance





Cette discussion est classé dans : fonction, arbre, code, int, entier


Répondre à ce message

Sujets en rapport avec ce message

fonction apply / template [ par pointejb ] Bonjour à tous,Je cherche un moyen d'implémenter une fonction de type 'apply' qui prendrait en parametres une fonction et ses arguments et qui aurait entier->string [ par blueburry ] Bonjour, je suis en train de creer une fonction qui permet de verifier si la commande tapee sur telnet est bonne ou pas.Si elle est juste, un code de tableau d'entier. [ par gdpasmini ] Hello !j'ai un petit soucis avec une fonction qui renvoi un tableau en parametre... voila les details :Dans mes fonctions : int * boutonDecodFlux(void Algo utile ou complètement "bidon"?? [ par ninjagtr ] Bonjour,Je suis tombé sur un bout de code et je ne sais pas s'il a une utilité (autre que de me faire chercher lol).Voici le code : int Devinez(int x) probleme création d'une clé de registre [ par stefbuet ] Salut, en regardant les sources du site, j'ai réussi à extraire un pti bou de code mais sa ne marche pas completement:en effet, le chemin mycompagny/m Une fonction qui ne marche pas..... [ par wizard512 ] Bonjours a tous,et joyeux noel pour ceux qui le fête,j'ai besoin d'un peu d'aide pour une fonction que j'ai cré pointeur sur une fonction [ par pasty ] Bonjour,J'appelle une fonction f(int *,int *,int) dont le code  est dans un DLL depuis le programme principal main.cpp Je déclare la fonction dans m warning bizzare [ par lektrosonic ] Bonsoir, je code un programe sous Visual studio 2005 professionel.Mon programme est constitue de deux fichiers.c :  un.c et deux.c et deux headers cor faire un projet enc [ par nana87 ] slt, j'ai eu un programme en c mais je dois le réorganiser sous forme des fichier pour faire un projet ,il y a quelqu'un qui peut m'aider pour ce prob Recursivités [ par darkwhite ] Salut a tous, Je viens de commencer mon initiation au fonction recursives mais il y a une chose qui m'echape dans ce code simple void debut_fin(int nb


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.