IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problème à l'écriture de l'arbre de huffman dans le fichier.


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Problème à l'écriture de l'arbre de huffman dans le fichier.
    Bonsoir;
    Je travaille sur un programme de compression de fichiers en cpp avec l'algorithme de Hufman.
    Au moment où je dois écrire mon arbre dans le fichier, j'ai rencontré un problème. Le code binaire des caractères est tjrs à 0 . La fonction suivante m'affiche tjrs des 0 même en passant un caractère comme constante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void afficherEnBinaire(char b){
        char c = b;
        for(int i = 0; i < 8; ++i){
            if(c & 128 != 0)
                cout<<1;
            else
                cout<<0;
            c <<= 1;
        }
    }
    Merci et bonne année.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 118
    Points : 158
    Points
    158
    Par défaut
    pour afficher en binaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void afficherEnBinaire(char b){
            for(int i = 0; i <= 7; ++i)
    	{
    		std::cout << (bool)(b & (1 << i)) << std::endl;
    	}
    }

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonsoir,

    qu'espères-tu faire avec ce code ? Le comprends-tu ou l'as tu trouvé/copié d'internet ?

    << c'est un décallage à gauche, et &128 (0x80) prend le 8° bit
    pourquoi utiliser une copie du paramètre b ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Citation Envoyé par backlash Voir le message
    pour afficher en binaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void afficherEnBinaire(char b){
            for(int i = 0; i <= 7; ++i)
    	{
    		std::cout << (bool)(b & (1 << i)) << std::endl;
    	}
    }
    Es-tu sûre de ne pas écrire le nombre à l'envers ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Bonsoir,

    qu'espères-tu faire avec ce code ? Le comprends-tu ou l'as tu trouvé/copié d'internet ?

    << c'est un décallage à gauche, et &128 (0x80) prend le 8° bit
    pourquoi utiliser une copie du paramètre b ?
    Bonjour;
    Non, je l'ai pas trouvé sur internet. En fait je voulais écrire mon arbre de Huffman dans le fichier compressé, la fonction écrit bien les noeuds et les feuilles dans le fichier(1 pour les noeuds et 0 pour les feuilles), mais pour les caractères, elle écrit toujours des 0, c'est pourquoi j'ai écrit cette fonction d'affichage pour comprendre sa vient d'où le problème.
    NB: La fonction qui écrit bit à bit fonction bien.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par backlash Voir le message
    pour afficher en binaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void afficherEnBinaire(char b){
            for(int i = 0; i <= 7; ++i)
    	{
    		std::cout << (bool)(b & (1 << i)) << std::endl;
    	}
    }
    Merci ça marche pour l'affichage mais j'ai tjrs le problème à l'écriture de l'arbre. je vais essayer d'adapter la fonction qui écrit bit à bit dans le tampon à ton code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. écriture d'un tableau de cellules dans un fichier texte
    Par Christinita dans le forum MATLAB
    Réponses: 3
    Dernier message: 14/02/2010, 21h21
  2. Problème lors de l'importation d'une date dans un fichier
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/01/2010, 15h42
  3. Réponses: 15
    Dernier message: 13/10/2009, 13h53
  4. Réponses: 5
    Dernier message: 28/02/2008, 21h30
  5. Réponses: 5
    Dernier message: 31/05/2007, 19h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo