Université de Nice-Sophia Antipolis avril 2022
Polytech/Xidian Durée: 1h30
Pointeurs
Travaux Pratiques – Séance no10b
1) Soient le typeformeet la procédureafficherFormesuivants : t y p e d e f enum { carre , rond , triangle } forme ; void afficherForme ( forme f) {
s w i t c h (f) {
c a s e carre : printf (" carré "); break; c a s e rond : printf (" rond "); break; c a s e triangle : printf (" triangle "); break;
d e f a u l t : printf (" forme inconnue ");
} }
Vous testerez les exercices suivants au fur et à mesure.
— Déclarez trois pointeurs,p,qetrsur le typeforme.
— Créez deux objets dynamiques, un carré et un rond, accessibles respectivement par les pointeurspetq.
— Affichez la valeur des objets pointés parpetq.
— Faites pointerrsur l’objet pointé parp, et affichez la valeur de l’objet pointé parr.
— Transformez la valeur de l’objet pointé parpentriangleet affichez la valeur de l’objet pointé parr.
— Détruisez l’objet pointé parp.
— Affichez la valeur de l’objet pointé parr. Expliquez le résultat.
2) Soient les déclarations suivantes : t y p e d e f s t r u c t noeud {
forme f;
s t r u c t noeud * suivant ; } * ListeDeFormes ; ListeDeFormes lf;
— Écrivez dans la fonctionmainles instructions nécessaires pour créer la structure suivante : lf
suivant suivant suivant
— À l’aide de la procédureafficherForme, écrivez une procédureafficherListedeFormesqui affiche la liste des formes. Cette procédure possède un seul paramètre de typeListeDeFormes.
— Affichez le contenu delf.
— Ajoutez en tête delfuncarreet affichez à nouveaulf.
— Supprimez de la liste l’objet dynamique qui contient le triangle et affichez à nouveaulf. 1
3) Écrivez la fonctionlongueurqui renvoie le nombre de formes d’une liste de formes.
/* Rôle : renvoie le nombre de formes de la liste */
i n t longueur ( ListeDeFormes l)
4) Écrivez la fonctionièmequi renvoie la forme à un rang donné d’une liste de formes.
/* Rôle : renvoie la forme de rang r de la liste l */
/* Antécédent : 1 6 r 6 longueur (l) */
forme ieme ( ListeDeFormes l, i n t r)
5) Écrivez la fonctioninsérerqui insère une forme à un rang donné d’une liste de formes.
/* Rôle : insérer dans la liste l la forme f, au rang r */
/* Antécédent : 1 6 r 6 longueur (l) + 1 */
void insérer ( ListeDeFormes *l, i n t r, forme f)
6) Écrivez la fonctionsupprimerqui supprime la forme d’un rang donné d’une liste de formes.
/* Rôle : supprime la forme de rang r de la liste l */
/* Antécédent : 1 6 r 6 longueur (l) */
void supprimer ( ListeDeFormes *l, i n t r)
7) Refaites l’exercice 2 avec les fonctionsinséreretsupprimerque vous venez d’écrire.
2