Avant de commencer…
Corrections du TD précédent à venir…
Qu’est-ce qu’on apprend
- Traiter des tableaux de
struct
.
Lecture…
Gestion de mémoire:
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
- permet d’entrer au clavier (pas via la ligne de commande) N=3 intervalles (N doit être variable!!!),
- stocke ces intervalles dans un tableau de struct intervalle dans l’ordre de saisie,
- calcule et affiche leur intersection,
- 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
- prend en argument la valeur N,
- crée un tableau de N intervalles et
- utilise une boucle pour saisir les N intervalles avec le clavier (en appelant saisie_intervalle).
- 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
- prend en argument un tableau d’intervalles ainsi que N,
- utilise une boucle pour calculer l’intersection des N intervalles (en appelant la fonction “intersection”)
- 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.