Test de C++ n° 3 : (25 mars 2000 – durée : 2h)

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique
Créé le 27/03/2000 - Dernière mise à jour : 13/04/2000

Tout document autorisé

    Dans les exercices qui nécessitent de modifier du code existant (comme les exercices faits en TP par exemple), il n'est pas nécessaire de réécrire tout le code environnant, mais seulement de situer l'ajout/modification que vous effectuez : si vous ajoutez une fonction membre dans une classe, inutile de recopier la classe entière, mais faites apparaître clairement à quel endroit se situe l'ajout (partie privée, protégée, publique, etc...)

Sommaire

Fonction resize()
Fonction swap() de pile CStackArray
Fonction swap() d'élément de CStackArray
Fonction swap() de CStackList
Destructeur de la classe CStackList
Classe abstraite CFileAbstr
 

Fonction resize()

    La technique qui consiste à augmenter la taille d'une structure lorsque c'est nécessaire est très fréquente. Nous l'avons rencontrée déjà à plusieurs reprises : les conteneurs standards de la bibliothèque C++ (push_back() de vector et de list, append() de string etc...) ainsi que dans la fonction Pop() de la pile générique CStackArray implémentée dans le TP 09. En revanche, il est rare que la réduction automatique soit implémentée. La solution préférée est de ne réduire la structure qu'à la demande expresse de l'utilisateur. C'est le rôle de la fonction resize(), elle aussi déjà utilisée.

    A la classe générique CStackArray, ajouter la fonction resize() qui permet de donner une nouvelle taille à la pile :

    Ne pas tester la mémoire insuffisante.

Remarque : si nécessaire, il existe une  fonction min(a, b), avec a et b de type entier.

    Voir corrigé.

Sommaire

Fonction swap() de pile CStackArray

    A la classe générique CStackArray, ajouter la fonction membre swap() qui admet une autre pile en paramètre, et qui permute les deux piles.

    Voir corrigé.

Sommaire

Fonction swap() d'élément de CStackArray

    A la classe générique CStackArray, ajouter la fonction sans paramètre swap() qui permute l'élément sur le sommet de la pile avec celui qui est immédiatement dessous. Prévoir une éventuelle exception.

    Voir corrigé.

Sommaire

Fonction swap() de CStackList

    A la classe générique CStackList, ajouter la fonction sans paramètre swap() qui permute l'élément sur le sommet de la pile avec celui qui est immédiatement dessous. Prévoir une éventuelle exception. Il est fortement conseillé de faire un schéma avant de programmer cette fonction. On supposera que la fonction SetSuivant() existe dans la classe générique CElemGen.

    Voir corrigé.

Sommaire

Destructeur de la classe CStackList

    Le destructeur de la classe CStackList écrit dans le TP 09 est maladroit : si la pile n'est pas vide, une exception est levée, ce qui permet d'informer l'utilisateur : c'est bien !. Mais le destructeur de la pile est appelé automatiquement lorsque le contrôle du programme sort de la portée de la pile. L'exception levée ne peut donc être capturée qu'à l'extérieur de ce bloc : la mémoire est donc de toutes façons perdue. Corriger le destructeur de la classe générique CStackList pour résoudre ce problème.

    Voir corrigé.

Sommaire

Classe abstraite CFileAbstr

    Une file est une structure dans laquelle on dépose des données à une extrémité, que l'on récupère à l'autre. On la désigne généralement sous le terme de FIFO : First In, First Out (premier entré, premier sorti). Quelle que soit l'implémentation, une file doit donc permettre de déposer et de retirer. Ecrire la classe abstraite correspondante CFileAbstr

    Voir corrigé.

Sommaire

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique