Programmation impérative : TP 3
Ressources (à regarder chez vous)
On peut avoir besoin de récupérer des valeurs de l'entrée standard,
par exemple pour entrer facilement des tableaux. Regardez donc le
manuel à la page de scanf… Cette fonction prend en
paramètre un format, un peu à la manière de printf, et
autant de pointeurs (bien typés) que de conversions dans le format,
son effet est d'affecter aux emplacements pointés les valeurs tapées
sur l'entrée standard. On peut entrer les valeurs les unes après les
autres ou en une seule fois (pourvu qu'on les sépare par des
espaces).
Exemple de récupération de deux valeurs :
int a;
int b;
scanf("%d %d",&a,&b);
printf("La valeur de a est : %d et celle de b est %d \n",a,b);
affecte aux deux variables les valeurs respectivement reçues
depuis l'entrée standard puis les affiche.
Enregistrements
Un rationnel p/q peut être représenté
à l'aide d'un enregistrement précisant numérateur et dénominateur.
- Proposer un type pour les rationnels.
- Écrire une fonction réalisant l'addition de deux
rationnels (sans chercher à réduire la fraction
obtenue).
- Écrire une fonction réalisant l'addition de deux
rationnels (en réduisant la fraction
obtenue).
Tableaux, base
- Proposez une fonction qui affiche (sur une ligne) les
éléments d'un tableau d'int (correctement
espacés, sur 5 caractères), dans l'ordre des
indices.
- Proposez une fonction qui affiche les éléments
d'un tableau d'int, un par ligne,
précédés de l'indice leur correspondant entre
crochets.
Exemple : [42] : 666
- Proposez une fonction qui retourne la moyenne (double)
des éléments (int) d'un tableau.
Tableaux comme type concret
On se propose de représenter des polynômes de
degré N-1 à l'aide de tableaux de N
cases tels que l'indice représente de degré du
monôme et la valeur à cet indice représente le
coefficient associé.
- Proposez une fonction qui sur la donnée de trois
polynômes p1, p2 et p3
modifie p3 afin qu'il soit égal à la somme
de p1 et p2.
- Proposez une fonction qui retourne la valeur d'un polynôme
en un point donné, d'abord naïvement puis en
schéma de Horner.
Recherche en tables
On peut travailler sur deux tableaux pour associer par exemple des
prix à des références (et vice versa).
Considérons deux tableaux de même taille ref
et price. On range dans ref les
références des articles, on range dans price
les prix correspondants dans le même ordre. Par
hypothèse toutes les références doivent
être distinctes deux-à-deux.
- Proposez une fonction qui teste si un article est
référencé dans cette base.
- Proposez une fonction qui retourne le prix d'un article de
référence donnée.
- Proposez une fonction qui affiche les références
de tous les articles correspondant à un prix donné.
Tris (par ordre croissant)
- Implantez un tri par sélection (vu en cours). De toute
façon vous devez toujours coder ce que vous avez vu en
cours… Codez-le d'abord comme en cours, puis en deux boucles
imbriquées.
- Le tri à bulles consiste à emmener les
éléments les plus gros à la fin du tableau en
permutant leur place avec leurs successeurs dans le tableau tant que
ceux-ci sont plus petits. Implantez un tri à bulles.