T1.programmation : Sujet du TP supp.
T1.programmation : Sujet du TP3
Groupe ESIEE, Denis BUREAU, février 2001.
Attention !
Le sujet peut être modifié jusqu'à la veille du TP.
1 Les objectifs
Être capable de réaliser sur machine des programmes mettant en
oeuvre les notions vues au TD supp.
2 Fichiers et répertoires
3 Programme principal
Écrire en C++ un programme principal qui déclare une liste puis,
tant que l'utilisateur ne tape pas Q pour sortir, saisit une
commande sur un caractère et appelle le sous-programme correspondant
(après avoir saisi la valeur de l'élément si nécessaire).
Suggestion de liste de commandes :
- I InitVide
- v EstVide
- d AjouteDebut
- D EnleveDebut
- l Longueur
- a AfficheListe
- Z DetruitListe
- c Contient
- n Compte
- f AjouteFin
- F EnleveFin
- E EnleveElement (plus difficile à programmer)
- T EnleveTous (plus difficile à programmer)
- i Inverse (plus difficile à programmer)
- P CreeListe
- Q quitte le programme
- ? affiche la liste des commandes
4 Rappel des déclarations
- le type TypElement (par exemple, équivalent à
double)
- le type TypMaillon (contenant notamment un TypElement)
- le type TypPtrMaillon
- le type TypListe
5 Traitements de base
Écrire en C++ les sous-programmes suivants :
0. |
CreeMaillon : crée un maillon et le remplit avec ses deux
paramètres element et ptrMaillon, puis retourne son adresse.
Cette fonction devra être utilisée dans la suite à chaque
fois qu'il est
nécessaire de créer un maillon. |
- InitVide : initialise son paramètre liste à
NULL .
- EstVide : retourne VRAI si son paramètre liste est
vide, et FAUX sinon. Cette fonction est
appelée à servir
souvent dans les sous-programmes suivants.
- AjoutDebut : ajoute au début de son paramètre
liste un maillon contenant son paramètre element.
- EnleveDebut : enlève et détruit le premier maillon de
son paramètre liste.
- Longueur : retourne le nombre de maillons de son paramètre
liste.
- AfficheListe : affiche l'intégralité de son paramètre
liste suivant le format :
[0.12|-]->[34.567|-]->/// .
- DetruitListe : détruit l'intégralité de son
paramètre liste qui devient alors vide.
- Contient : retourne VRAI si son paramètre element
figure dans au moins un des maillons de son paramètre liste,
et FAUX sinon.
- ContientPtr : si son paramètre element
est trouvé dans au moins un des maillons de son paramètre
liste, retourne l'adresse de ce maillon,
sinon retourne NULL.
- Compte : retourne le nombre de fois qu'apparaît son
paramètre element dans son paramètre liste.
Tester cette première partie de programme en utilisant tous les
sous-programmes précédents
et en pensant à tous les cas particuliers.
6 Autres traitements
Écrire en C++ les sous-programmes suivants :
(ne pas oublier tous les cas particuliers)
- AjoutFin : ajoute un maillon contenant son paramètre
element à la fin de son paramètre liste.
- EnleveFin : enlève et détruit le dernier maillon de son
paramètre liste.
- EnleveElement : enlève et détruit le premier maillon de
son paramètre liste qui contient son paramètre
element.
- EnleveTous : enlève et détruit dans son paramètre
liste tous les maillons qui contiennent son paramètre
element.
- Inverse : modifie son paramètre liste de telle sorte
que les maillons soient dans l'ordre inverse
Une version naïve peut utiliser des sous-programmes
précédemment écrits pour créer et détruire des maillons.
Mais la bonne version ne doit créer ni détruire aucun maillon.
- CreeListe : crée une liste numérique d'après les
paramètres suivants :
- la liste qui sera ainsi constituée
- le nombre de maillons souhaités
- la valeur à mettre dans le premier maillon
- l'ecart entre deux valeurs successives
Rappel : il est plus difficile d'insérer à la fin qu'au début
...
- etc... (la suite est laissée à votre imagination)
Tester extensivement le programme en utilisant tous les sous-programmes
et en pensant à tous les cas particuliers.
File translated from
TEX
by
TTH,
version 2.75.
On 2 Feb 2001, 16:29.