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.

  1. Proposer un type pour les rationnels.
  2. Écrire une fonction réalisant l'addition de deux rationnels (sans chercher à réduire la fraction obtenue).
  3. Écrire une fonction réalisant l'addition de deux rationnels (en réduisant la fraction obtenue).

Tableaux, base

  1. 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.
  2. 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
  3. 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é.

  1. 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.
  2. 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.

  1. Proposez une fonction qui teste si un article est référencé dans cette base.
  2. Proposez une fonction qui retourne le prix d'un article de référence donnée.
  3. Proposez une fonction qui affiche les références de tous les articles correspondant à un prix donné.

Tris (par ordre croissant)

  1. 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.
  2. 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.