J aurai besoin qu une ame charitable m aide afin de mener a bien ce projet.
Je dois livrer les fichiers qui sont indiqués...
Un bout de code serait le bienvenu
Merci d avance
Le thème général consiste à créer une classe "IntStack" pour gérer une structure classique :
la pile (LIFO), contenant ici des entiers. Les fonctions demandées pour cette classe sont celles de la
classe stack de la STL. Il s'agit ici d'un sujet d'école :
pas utiliser les fonctions de la classe stack standard.
II. La déclaration de la classe IntStack
Les deux membres « données » de cette classe sont :
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 class IntStack { private : vector<int> m_pile; int m_index; public: // Constructeurs //=============== // Constructeur sans arguments : pile vide IntStack (); // Constructeur de recopie IntStack ( const IntStack &); // Surcharge d'opérateurs //======================= // Opérateur d'affectation = IntStack & operator = ( const IntStack & ); // Autres fonctions //================= // Hauteur (taille) de la pile (nbre d'élements) int size() const; // True si longueur = 0 bool empty () const; // Renvoie l'élément au sommet de la pile (sans le dépiler) int top() const; // Dépile l'élément au sommet de la pile (sans en renvoyer la valeur) void pop(); // Empile un élément au sommet de la pile void push ( int ); };
o Le tableau dynamique m_pile, qui utilise la classe standard "vector".
La classe "vector" facilite grandement la programmation : vous n'avez en effet pas besoin de
gérer les allocations mémoire, car la classe "vector" le fait automatiquement et, de plus, elle
possède des fonctions prédéfinies qui permettent d'implémenter facilement les fonctions
demandées (cf. remarques en bas de la page 2).
o La taille de la pile, de type entier, m_index. Cette valeur correspond à l’indice du tableau qui
pointe au-dessus du dernier élément de la pile : quand la pile est vide, m_index vaut 0, si elle
contient 2 éléments, m_index vaut 2. m_index doit être décrémenté par pop() et incrémenté
par push().
III. Les fonctions membres de la classe IntStack
Les constructeurs
· Le constructeur sans arguments : il construit une pile "vide", de taille 0. Aucune initialisation n’est
nécessaire pour la variable membre m_pile.
· Le constructeur de recopie : il construit une pile en recopiant une pile déjà existante. N.B. : il n’y a
ici aucune allocation mémoire à faire.
La rédéfinition d’opérateurs
Le seul opérateur demandé est l'opérateur d'affectation (operator =). Il réalise l’affectation d’une pile à
partir d’une autre pile.
Les autres fonctions
Les autres fonctions demandées : size(), empty(), top(), pop(), push(), sont des fonctions classiques
des piles, le commentaire dans la déclaration présentée plus haut précisant ce qu’elles font.
IV. Le main()
Le main() sera dans un fichier à part. Il devra tester :
- La déclaration d’une pile vide,
- la construction d’une pile à partir d’une pile existante,
- l'empilement de quelques valeurs dans une pile,
- la lecture de la valeur du haut de la pile ( avec top() ), puis son dépilement ( avec pop() ), dans
une boucle qui dépile toutes les valeurs successivement.
- l'affectation d'une pile à une autre pile.
Les anomalies (ex : vouloir dépiler une pile vide) seront gérées à l’aide du mécanisme throw-try-catch.
V. Fichiers à livrer :
- IntStack.h
- IntStack.cpp ( pas obligatoire si vous définissez toutes les fonctions « inline »).
- main.cpp
- makefile
Remarques importantes :
Rappelons que de la classe standard "vector" réalise un tableau dynamique d’éléments de type
indiqué. Ex : vector<int> tab; déclare tab en tant que tableau d’entiers.
Voici quelques fonctions de la classe "vector" particulièrement utiles :
· size() : cette fonction, que vous avez déjà vue dans le TP4, renvoie la taille (=nombre d’éléments)
du tableau.
· push_back(valeur) : cette fonction, que vous avez aussi déjà vue dans le TP4, permet d’ajouter
valeur à la fin du tableau.
· pop_back() : cette fonction permet de supprimer le dernier élément du tableau.
· back() : cette fonction renvoie le dernier élément du tableau (sans le supprimer).
balise [code] rajoutée par r0d. Merci d'y penser la prochaine fois.
Partager