0% ont trouvé ce document utile (0 vote)
78 vues7 pages

Sujet 09 01 19

Le document décrit une classe String pour représenter des chaînes de caractères en C++ sans utiliser la classe std::string. Il présente également une classe abstraite générique Pile et sa classe d'implémentation PileChainee utilisant une liste chaînée pour représenter une pile de façon générique en C++.

Transféré par

Abdo Elmamoun
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
78 vues7 pages

Sujet 09 01 19

Le document décrit une classe String pour représenter des chaînes de caractères en C++ sans utiliser la classe std::string. Il présente également une classe abstraite générique Pile et sa classe d'implémentation PileChainee utilisant une liste chaînée pour représenter une pile de façon générique en C++.

Transféré par

Abdo Elmamoun
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

POLYTECH – ELEC4 2018–2019

Contrôle de Programmation C++

Durée : 1h30 Aucun document autorisé

Nom : Prénom :

1 Question 1

I 1. On considère que la classe std::string n’existe pas, et on souhaite développer une classe String
pour représenter les chaînes de caractères. Complétez la classe String suivante :
c l a s s String {
protected :
c h a r * s ; // les caractères de la chaîne
i n t lg ; // sa longueur
};

avec :
1. le constructeur qui permet, par exemple, la déclaration String s1("toto");
2. le constructeur qui permet, par exemple, la déclaration String s2 = s1; (attention, on
obtient une nouvelle chaîne de caractères)
3. l’ opérateur qui permet, par exemple, s2 = s1; (attention, on obtient une nouvelle chaîne
de caractères)
4. l’opérateur qui permet d’accéder ou de modifier le ième (0 6 i < lg) caractère de la chaîne
courante. Vous émettrez l’exception IndexException si l’indice est incorrect.
5. l’opérateur qui permet d’écrire s2 + s2 (concaténation de deux chaînes)
6. la surcharge de l’opérateur <<

Note : vous pouvez utiliser les fonctions strlen, strcpy et strcat du langage C (#include <cstring>)

1
2
3
2 Question 2

On dispose d’une classe abstraite générique Liste et d’une classe d’implémentation générique
ListeChainee qui l’implémente à l’aide d’une structure d’éléments dynamiques chaînés.

On souhaite implémenter une pile à l’aide d’une liste. On rappelle que les méthodes disponibles
sur une liste sont :
i n t longueur () c o n s t ;
v o i d inserer ( c o n s t T &x , c o n s t i n t r );
v o i d supprimer ( c o n s t i n t r );
c o n s t T & ieme ( i n t r ) c o n s t ;

I 2. Écrivez en C++ la classe abstraite générique Pile avec les quatre méthodes abstraites estVide,
empiler, dépiler, et sommet.

I 3. En vous servant de la classe ListeChainee, écrivez en C++ la classe générique PileChainee


qui implémente une Pile à l’aide d’une liste chaînée. Vous programmez le(s) constructeur(s) et
les quatre méthodes de manipulation d’une pile. Vous émettrez l’exception PileVideException si
nécessaire.

4
5
6
I 4. Écrivez en C++ la fonction main qui teste votre classe PileChînee, et en particulier attrape une
exception.

Vous aimerez peut-être aussi