begin process at 2010 02 10 06:38:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Construire tableau code binaire des caractères avec l'arbre de Huffman


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Construire tableau code binaire des caractères avec l'arbre de Huffman

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ée 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) Modification d'une fonction [ par amouna22528013 ] Salut, Je veux modifier une fonction de lecture d'un fichier des données en entrée. La fonction ne peut lire que des données codées en numéros [quote] Exercice sur Pointeurs, classes, héritage... [ par snoozriton ] Bonjour à tous, étant en train d'étudier le C++, j'ai quelques soucis avec un exercice. C'est un classique dont je vous donne l'énoncé : [b]1. Défini Syntaxe ASN1 et CHOICE [ par kindara ] Bonjour à tous, Voilà j'ai un problème au test de mon module ASN ( asn1c -E -F) Je tente de traduire un bout de code de C en ASN1: Voici un bout de Passage structure en argument. [ par macbang ] Bonjour,J'ai un petit problème avec mon programme.Le but est de découper une chaine de caractère, puis de l'analyser dans une autre fonction.je déclar gestion d'un cinéma [ par rouday55 ] Bonsoir bonsoir ! Je suis novice en langage c, je m'y suis mis depuis début novembre et j'ai quelques lacunes dans la résolution de mon problème. En f problème de typedef [ par Larwin ] bonjour tout le monde. Nouveau de le monde du c/c++, j'avoue que je galère quelque peu et je me retourne vers la communauté des développeurs pour trou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,608 sec (4)

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