TD06 Tableaux II

Avant de commencer…

Consultez les corrections du TD5.

Qu’est-ce qu’on apprend

  1. Traiter des tableaux de struct.

Lecture…

Gestion de mémoire:

  • Chapitre 15, 16, 17, 18 du poly ou le notebook IN102-11 et IN102-12

C’est l’heure du quizz…

Remplissez le quizz IN102-06 avant 18h.


Au boulot…

Vous allez représenter des intervalles sur les entiers avec des variables de type “struct intervalle”. Un intervalle [a,b] est constitué de deux entiers : une borne inférieure a et une borne supérieure b. L’intersection de deux intervalles [a1,b1], [a2,b2] est l’intervalle [max(a1,a2),min(b1,b2)].

Ecrivez un programme qui

  1. permet d’entrer au clavier (pas via la ligne de commande) N=3 intervalles (N doit être variable!!!),
  2. stocke ces intervalles dans un tableau de struct intervalle dans l’ordre de saisie,
  3. calcule et affiche leur intersection,
  4. affiche les N intervalles dans l’ordre inverse.

Suivez les étapes comme décrit ci-dessous. Donnez comme réponse seulement les lignes de code pertinentes pour la question.

Remarque: Dans cet énoncé, vous n’avez pas besoin d’un traitement spécial pour un intervalle vide (le cas b < a). Vous pouvez les utiliser, afficher etc. comme toutes les autres intervalles.

IMPORTANT: Donnez votre prénom et nom au début du fichier de réponse, sous forme de commentaire. Ajoutez également les réponses aux questions dans votre programme, sous forme de commentaires. Exemple:

/* Jeanne LAGAFFE */
#include <stdio.h>
int main () {
   printf("Hello World !!\n");
}
/* 
Q1: Ceci est la réponse à la question 1.
Q2: Voilà la réponse à la question 2.
*/

Q1:

Définissez le type struct intervalle.

Q2:

Définissez une fonction “affichage” qui prend une intervalle et l’affiche dans le format [a,b].

Q3:

Dans votre main(), définissez les intervalles [-1,9] et [-3,5] et affichez-les.

Q4:

Définissez une fonction “saisie_intervalle” qui ne prend pas d’argument, permet d’entrer au clavier une intervalle, et donne cet intervalle comme valeur de retour. Testez cette fonction dans votre main() et affichez l’intervalle saisie.

Q5:

Définissez une fonction “intersection” qui prend deux intervalles et rend leur intersection (un intervalle). Testez-là dans votre main en intersectant les intervalles [-1,9] et [-3,5] et affichez le résultat.

Q6:

Ajoutez une fonction “saisie_tableau” qui

  1. prend en argument la valeur N,
  2. crée un tableau de N intervalles et
  3. utilise une boucle pour saisir les N intervalles avec le clavier (en appelant saisie_intervalle).
  4. donne un pointeur vers le tableau comme valeur de retour.

Testez la fonction en l’appelant depuis votre main().

Q7:

Ajoutez une fonction “intersection_tableau”, qui

  1. prend en argument un tableau d’intervalles ainsi que N,
  2. utilise une boucle pour calculer l’intersection des N intervalles (en appelant la fonction “intersection”)
  3. donne l’intersection (un intervalle) en valeur de retour.

Testez la fonction dans votre main(), puis affichez le résultat.

Q8:

Ajoutez une fonction “affichage_tableau_inverse” qui prend en argument un tableau d’intervalles ainsi que N et affiche les N intervalles dans l’ordre inverse. Appelez-là depuis votre main().

Q9:

Vérifiez que votre main() respecte toutes les consignes données au début de cet énoncé. Pensez à libérer la mémoire que vous avez réservé.

Validez:

Nommez le fichier T06.c et envoyez-le à votre chargé de TD

Correction du TD6

A partir de 17h, Vous trouvez les fichiers et une vidéo ici.

Pour préparer l’examen…

Pour vous entraîner, essayez de répondre aux exemples de question ici.