Programmation impérative : TP 4
- TOUTES les fonctions demandées doivent être commentées (brièvement),
- TOUTES les fonctions demandées doivent être testées
dans main.
Piles
- Proposez une fonction d'affichage d'une pile d'int (base
à droite, largeur constante) et les fonctions sur les piles
mentionnées en cours :
- Initialisation qui a pour effet de rendre une pile vide,
- Test de vacuité qui retourne 1 si une pile est vide
et 0 sinon,
- Empilement qui a pour effet de placer une valeur en sommet de
pile,
- Dépilement qui a pour effet de retirer l'élement au sommet de
la pile et le retourne.
Vous devez utiliser ces fonctions dans la suite pour toute
manipulation des piles.
- Proposez une fonction qui duplique l'élément à son sommet (on
trouve donc ensuite cet élément au sommet et à l'étage juste
en dessous ; la pile a gagné un élément).
- On souhaite écrire une fonction qui calcule la factorielle
d'un int à l'aide d'une pile.
- Proposez une fonction qui empile son sommet puis celui-ci moins
1 .
Par exemple si une pile contient k éléments et
que son sommet est n, au sortir de la
fonction la pile aura k+1 éléments, son sommet
sera n-1 et l'étage en dessous du sommet
contiendra n.
- Proposez une fonction qui retourne le produit de tous les éléments
d'une pile (éléments de type int) passée en paramètre.
- Proposez une fonction qui retourne la factorielle
d'un int à l'aide (entre autre) des deux fonctions
précédentes. Vous afficherez la pile à chaque étape.
- On souhaite écrire une fonction qui calcule la factorielle
d'un int à l'aide d'une pile mais de manière un peu différente.
- Proposez une fonction qui a pour effet d'empiler le produit des
deux premiers éléments accessibles d'une pile (éléments de
type int) puis l'ancien sommet moins 1.
Par exemple si une pile contient k éléments, que
son sommet est n et l'étage en dessous du
sommet m, au sortir de la fonction la pile
aura k éléments, son sommet sera n-1 et
l'étage en dessous du sommet contiendra n*m.
- Proposez une fonction qui retourne la factorielle
d'un int à l'aide (entre autre) de la fonction
précédente. Vous afficherez la pile à chaque étape.
- Quelle différence constatez-vous entre ces deux méthodes ?
Allocations
Vous avez besoin dans la suite de la
bibliothèque stdlib.h.
N'hésitez pas à utiliser scanf dans main pour
faciliter l'entrée de vos tableaux et valeurs. Un bon exercice
consiste à demander à l'utilisateur une taille de tableau puis autant
de valeurs à entrer dans les cases qu'il est nécessaire. Ce n'est
toutefois pas nécéssaire pour la suite dans un premier temps.
- Proposez une fonction qui sur la donnée de deux double,
et seulement deux,
retourne un pointeur sur un double de la valeur maximale
des deux paramètres.
- Proposez une fonction qui sur la donnée de deux
tableaux ta, tb de même
taille size (donc trois paramètres) retourne un
pointeur sur leur vecteur de différences.
- On souhaite obtenir un tableau trié contenant les mêmes valeurs
qu'un tableau t passé en paramètre sans modifier
ce dernier. Proposez une fonction qui retourne un pointeur sur un
tel tableau trié.
- Proposez une fonction qui retourne un pointeur sur un tableau
trié des éléments en commun dans deux tableaux ta
et tb de tailles respectives sa
et sb.