Sunteți pe pagina 1din 3

TD4 : Classes et fonctions Gnrique en C++ On sintresse dans ce problme grer les infos dune Pile de personne et dtudiant

t ainsi que la possibilit de grer une liste dentiers ou autre type via lutilisation dune classe gnrique PileGenerique 1- La classe Personne et la classe Etudiant sont donnes par : class Personne { friend ostream& operator<< (ostream&,const Personne&); friend istream& operator>> (istream&,Personne&); private: string nom, prenom; public: Personne(); Personne(string, string); Personne(const Personne&); virtual ~Personne(); const Personne& operator=(const Personne&); bool operator< (const Personne&)const; bool operator==(const Personne & )const; void set_nom(string); void set_prenom(string); string getNom() const; string getPrenom() const; }; class Etudiant: public Personne { friend ostream& operator<< (ostream& sortie,const Etudiant& pers); friend istream& operator>> (istream&,Etudiant&); private: int niveau; public: Etudiant( ); Etudiant(string, string, int); virtual ~Etudiant( ); const Etudiant& operator=(const Etudiant&); bool operator<(const Etudiant & )const; bool operator==(const Etudiant & )const; int getNiveau( ) const; void setNiveau(const int& ) ; }; Question : Donnez limplmentation des deux classes Personne et Etudiant.

2- La classe gnrique PileGenerique est donne par :


template <class Telem> class PileGenerique { friend ostream& operator<< (ostream&, const PileGenerique<Telem>&); private: int sommet; int taille; Telem *adr; public : PileGenerique( ); PileGenerique(int); ~PileGenerique( ); PileGenerique(const PileGenerique<Telem> &); void empiler(Telem); Telem* depiler( );

Surcharge de loprateur dcriture

indice de la premire position libre dans le tableau donne la taille max de la PileGenerique pointeur sur le tableau contenant les lments de la PileGenerique constructeur par dfaut constructeur usuel ou constructeur avec arguments destructeur Constructeur par recopie empile un lment, sil nexiste pas dans la pile courante retourne un pointeur sur l'lment situ en haut de la pile en le supprimant vrifie lexistence dun lment dans la pile return true si la PileGenerique est vide return true si la PileGenerique est pleine retourne la dimension de la PileGenerique. retourne le sommet de la PileGenerique retourne le tableau adr oprateur daffectation retourne un pointeur sur la pile trie par ordre dcroissant retourne un pointeur sur la runion, sans doublant, de la pile courante et la pile pil_1. retourne un pointeur sur lintersection de la pile courante et la pile pil_1. ajoute un lment, sil nexiste pas, dans une position donne, dans la pile courante

bool existeElement(const Telem&) const; bool vide( ) const; bool pleine( ) const; int getTaille( ) const; int getSommet( ) const; Telem* getAdr( ) const; const PileGenerique<Telem>& operator=(const PileGenerique<Telem>&); PileGenerique<Telem>& * tabTrie( ); PileGenerique <Telem>* reunionPile(PileGenerique <Telem>* pil_1); PileGenerique <Telem>* intersectionPile( PileGenerique <Telem>* pil_1); void ajout(const Telem&, const int& position) ;

Telem* supprime(const int& position) ;

supprime llment se trouvant une position donne puis retourne un pointeur sur cet lment.

}; Questions : a- Donnez limplmentation de la classe PileGenerique. b- Donnez une fonction main permettant de manipuler une liste de string, Personne et Etudiant en utilisant des objets de type PileGenerique.

S-ar putea să vă placă și