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++/CLI Discussion :

héritage pile FiFo Lifo


Sujet :

C++/CLI

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Février 2013
    Messages : 81
    Points : 34
    Points
    34
    Par défaut héritage pile 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 : 751
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
    49
    50
     
    #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
    Je ne sais pas comment le faire
    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
     
    #include "BasePile.h"
     
    // PileFifo
     
    //*** Surcharge de  l'operateur < (empiler)
    PileFifo & PileFifo::operator < (int x){
     
    }
    //*** Surcharge de  l'operateur > (dépiler)
    void PileFifo::operator > (int & x){
     
    }
     
    // 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){
     
    }
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 073
    Points : 12 119
    Points
    12 119
    Par défaut
    1- Une pile c'est LIFO, sinon ce n'est pas une pile, donc, déjà le nommage est à l'Ouest.
    2- C'est quoi le rapport avec C++/CLI
    3- Pourquoi faire une roue carré ? http://www.cplusplus.com/reference/stack/stack/
    4- Utiliser les opérateurs supérieurs et inférieur pour faire du push et du pop, vous cherchez vraiment les em***des avec toutes les bibliothèques à base de template.
    5- Pourquoi les opérateurs < et > n'utilise pas les mêmes mécanismes que les opérateurs << et >> ?
    6- Code tout pourri parce qu'utilisation de pointeurs nus (tout pourri)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //*** 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;
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Février 2013
    Messages : 81
    Points : 34
    Points
    34
    Par défaut
    Merci beaucoup pour la clarification et de l'assistance
    Je suis encore débutant, je veux commencer par les bases, j'ai pas étudier encore la bibliothèque std
    et pour Lifo comment le faire car n'est pas le même principe que Fifo

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Un pile chaînée est plus facile à mettre en place qu'une file chaînée, car on n'a besoin de gérer qu'un seul bout de la pile: Le sommet (tête de la liste chaînée). Pas besoin de se casser le c*l à trouver la queue de la liste pour y ajouter un nouvel élément.

    Je suis encore débutant, je veux commencer par les bases, j'ai pas étudier encore la bibliothèque std
    J'ai longtemps cru à ce principe, mais j'ai fini par me rendre compte qu'il était à l'envers: En fait, la bibliothèque standard, c'est les bases, et c'est seulement quand on approfondit qu'il est approprié de regarder sous le capot et construire une maquette de moteur. L'important, c'est de commencer par apprendre les bons réflexes, à savoir utiliser la bibliothèque standard dès que c'est approprié.
    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 FiFo Lifo
    Par jockerse dans le forum Débuter
    Réponses: 2
    Dernier message: 08/04/2014, 11h45
  2. FIFO/ LIFO à mettre en place
    Par RubSit dans le forum SAGE
    Réponses: 0
    Dernier message: 13/06/2012, 15h46
  3. perdu avec PMP, FIFO, LIFO
    Par Shades dans le forum Access
    Réponses: 8
    Dernier message: 03/04/2012, 17h16
  4. [MySQL] Pile FIFO avec un Trigger
    Par takoha dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/12/2010, 12h15
  5. [Conception] Pile FIFO
    Par zoullou dans le forum Général Java
    Réponses: 12
    Dernier message: 17/03/2006, 10h08

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