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 :

exercice de compression RLE


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut exercice de compression RLE
    tout d'abord bonjour a tous :p voila je suis actuellement en bts informatique et , j'ai un petit projet a realiser : compresser un fichier avec la methode RLE
    et afficher le resultat de cette compresison en hexadecimale :p
    bon tout d'abord j'ai reussit a lire le fichier et , a l'afficher en base hexadecimale
    ensuite je compte le nombre de repetition du meme octet pour le RLE jusque la c'est asser facile c'est apres que sa se gate , comment faire pour que , dés que l'octet precedent et different de l'octet lu , lui dir qu'il affich celui ci une seule fois avec devant le nombre de fois qui apparait a la suite : je suis bloquer ici de plus je doit effectuer cette exercisse sans tablo ><
    je vous fait par de mon code (fait avec dev c++)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #include <iostream>
    #include <fstream>
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
     
     
        int i;
        char octet;
        char precedent;
        ifstream source;
        source.open("source.txt",ios::binary);
        precedent=0;
        i=1;
     
        while(source.read((char*)&octet,1))
        {
         if (precedent==octet)
         {
          i++;
         }
          else 
            {
             i=1;
            }            
         cout<<hex<<i<<hex<<(int)octet<<" ";
         precedent=octet;
        }    
     
     
     
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    je vous remerci d'avance pour votre aide cordialement

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour


    Ton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(source.read((char*)&octet,1))
    Précisèment le (char*)&offset m'inquiète un peu
    juste &octet , ne suffit pas ?

    je vais te donner que les grandes lignes ,c'est quand même ton exo :
    Une boucle qui verifie si ton fichier n'est pas fini
    Une boucle pour verifier que le caractère actuel est égale au précedent
    dans cette boucle tu increment ton i ( enfin comme actuellement )
    sinon lorsque tu sors de la boucle tu affiche , et tu lis un caractère pour avoir la nouvelle base de comparaison

    J'ai été très précis je trouve
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par mr munoz Voir le message
    c'est asser facile c'est apres que sa se gate , comment faire pour que , dés que l'octet precedent et different de l'octet lu , lui dir qu'il affich celui ci une seule fois avec devant le nombre de fois qui apparait a la suite
    Heu... moi je crois que c'est déjà là que ça se gate....
    Disons que tu aies les octets 0x02 0xEF 0xE1
    Est-ce 2 fois 0xEF puis 0xE1 ? ou bien l'octet 0x02 puis 0xEF et 0xE1 ?
    Et comment gère tu 259 octets identiques à la suite ?

    Le RLE en général c'est:
    1 octet = taille de ce qui suit dans les 7 bits de poids faible.
    Le bit de poids fort indique si le nombre est un nombre de répétition, ou un nombre de copies directes...
    Donc il te faut impérativement un buffer. Et qui dit buffer, dit tableau.

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut
    merci pour votre aide je vaus tester sa mais nicroman je sais qu'avec un tableau dynamique c'ette exo serait clairement plus facile mais , comme je l'ai dit precedament notre prof ne veut pas qu'on utilise les tableau :'( je vous tien au courant

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

Discussions similaires

  1. Conversion de BITMAP avec compression RLE
    Par Wahahoo dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/10/2013, 11h27
  2. Compression RLE
    Par theoryl dans le forum Images
    Réponses: 1
    Dernier message: 01/10/2012, 00h00
  3. Compression RLE d'une image
    Par D1ablO dans le forum C
    Réponses: 1
    Dernier message: 19/11/2011, 19h54
  4. Algorithme de Compression rle
    Par Jack Atlus dans le forum Images
    Réponses: 4
    Dernier message: 19/05/2011, 21h02
  5. Alogrithme de compression/decompression RLE
    Par Simon MARQUIS dans le forum Général Java
    Réponses: 0
    Dernier message: 08/02/2011, 12h33

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