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 :

héritage FiFo Lifo


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Février 2013
    Messages : 81
    Par défaut héritage FiFo Lifo
    Bonjour;
    j'ai le diagramme de classe suivant, les classe PileFifo et PileLifo hériter de la classe BasePile, et chaque pile se compose des cellule
    Nom : 1233451_287840811379509_4537061471106297449_n.jpg
Affichages : 432
Taille : 6,4 Ko

    j'ai le programme principale
    l'empiler et le dépiler à l’aide d’une liste chaînée
    main.cpp
    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
     
    #include "BasePile.h"
    using namespace std;
    int main(int argc, char** argv) {
        BasePile * ptPile;
        PileFifo fifo;
        PileLifo lifo;
        ptPile = &fifo;
        //FIFO
        *ptPile < 0 < 1;
        cout<<"pile="<<*ptPile;
        int i;
        *ptPile > i;
        cout<<"pile="<<*ptPile<<"i="<<i;
        ptPile=&lifo;
        //LIFO
        *ptPile < 0 < 1;
         cout<<"pile="<<*ptPile;
        *ptPile > i;
        cout<<"pile="<<*ptPile<<"i="<<i;
        return 0;
    }
    je fais la classe cellule
    Cellul.h
    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
     
    #ifndef CELLUL_H
    #define	CELLUL_H
    #include <iostream>
    using namespace std;
    class Cellul {
        friend class BasePile;
        friend class PileFifo;
        friend class PileLifo;
        int info;
        Cellul * succ;
    public:
     
        Cellul(int x=0){
            cout<<"construction cellule";
           info=x;
           succ=NULL;
        }
     
        ~Cellul(){
            delete succ;
        }
     
    };
    #endif
    et la classe BasePile
    BasePile.h
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    #ifndef BASEPILE_H
    #define	BASEPILE_H
    #include <iostream>
    using namespace std;
    #include "Cellul.h"
     
    class BasePile {
    protected:
        Cellul * last; // le dernier noeud inserer
    public:  
        virtual void operator > (int & x)=0; //surcharge de  l'operateur > (dépiler) méthode abstraite
        virtual BasePile & operator < (int x)=0; //surcharge de  l'operateur > (empiler) méthode abstraite
        friend ostream & operator<<(ostream & , BasePile & ); // surcharge de l'operateur d'affichage
     
        BasePile(){
            last=NULL;
            cout<<"Constructeur par defaut de BasePile";
        }
     
        bool vide(){
            if(last == NULL)
                return true;
            else
                return false;
        }
     
        ~BasePile(){
            if(last != NULL)
                vide();
        }
    };
     
     
     
    class PileFifo:public BasePile{
    public:
        void operator>(int& x);
        PileFifo & operator < (int x);
    };
     
     
    class PileLifo:public BasePile{
    public:
        void operator>(int& x);
        PileLifo & operator < (int x);
    };
    #endif
    j'ai un problème pour les surcharge de l'operateur empiler,dépiler pour PileFifo et PileLifo et l'affichage de chaque pile
    Je ne sais pas comment le faire je fais pour Fifo mais je ne sais pas est ce que correcte ou nn
    S'il vous plaît aidez-moi

    BasePile.cpp
    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
     
    #include "BasePile.h"
     
    // PileFifo
     
    //*** Surcharge de  l'operateur < (empiler)
    PileFifo & PileFifo::operator < (int x){
       Cellul* tmp = last;
       last = new Cellul(x);
       last->succ = tmp;
    }
    //*** Surcharge de  l'operateur > (dépiler)
    void PileFifo::operator > (int & x){
       x = last->info;
       Cellul* tmp = last;
       last = last->succ;
       delete tmp;
    }
     
    // PileLifo
     
    //*** Surcharge de  l'operateur < (empiler)
    PileLifo & PileLifo::operator<(int x){
     
    }
    //*** Surcharge de  l'operateur > (dépiler)
    void PileLifo::operator > (int & x){
     
    }
     
    //*** redefinition de l'operateur << 
    ostream & operator << (ostream & s, BasePile & p){
     
    }

  2. #2
    Membre très actif
    Profil pro
    C Embarqué / C++ Qt
    Inscrit en
    Janvier 2010
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : C Embarqué / C++ Qt

    Informations forums :
    Inscription : Janvier 2010
    Messages : 231
    Par défaut
    J'ai l'impression que tu t'es un peu emmêler les pinceaux, et du coup j'avoue avoir du mal à m'y retrouver dans ton code.
    (et bien sur je pense que tu réalise ses classes à but purement éducatif, et non pas pour un besoin réel)

    Quel est le type derrière Cellul ?

    Tes valeurs que tu entre, tu ne les stock pas dans un Vector ? Tableau ? Quelque chose ?

    J'ai personnellement trop de mal à savoir ce que fond certain bout de ton code pour te répondre.
    Qu'est-ce qui ne va pas ? (A part les fuites de mémoires ^^)

    ça compile ? Y-a-t-il des Warning ? Les sorties ne sont pas correctes ?

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    FIFO, ce n'est pas une pile, c'est une file.

    Ta classe BasePile, tu devrais l'appeler ListeChainee.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. héritage pile FiFo Lifo
    Par jockerse dans le forum C++/CLI
    Réponses: 3
    Dernier message: 08/04/2014, 11h43
  2. FIFO/ LIFO à mettre en place
    Par RubSit dans le forum SAGE
    Réponses: 7
    Dernier message: 06/07/2012, 13h49
  3. FIFO/ LIFO à mettre en place
    Par RubSit dans le forum SAGE
    Réponses: 0
    Dernier message: 13/06/2012, 15h46
  4. perdu avec PMP, FIFO, LIFO
    Par Shades dans le forum Access
    Réponses: 8
    Dernier message: 03/04/2012, 17h16
  5. Traitement natif LIFO ou FIFO ?
    Par d-Rek dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/11/2007, 13h14

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