TD TP 4 2021 2022 Lpgi2-1
TD TP 4 2021 2022 Lpgi2-1
TD TP 4 2021 2022 Lpgi2-1
DE SAINT-LOUIS
SECTION INFORMATIQUE
*Exercice 1
Un pointeur est une variable « pointant » vers un emplacement mémoire. Il peut ainsi être
représenté comme suit :
x
La représentation 7 indique que le contenu de x est 7
Montrer à partir de la représentation graphique proposée, les changements des valeurs des
différentes variables pour chaque instruction.
*Exercice 2
On considère la suite d’instructions ci-après. Remplir le tableau (le contenu des variables) en
suivant les instructions.
Variable Adresse Contenu
int x,y,z ; x 20000 231 / …
int *p1, *p2 ; y 20002 472 / …
1. x=23 ; z 20004
2. y=47 ; p1 30000
3. z=100 ; p2 40000
4. p1=&x ;
5. p2=&z ;
6. *p1 = (*p2)++ ;
7. p1=p2 ;
8. p2=&y ;
9. *p1 -= *p2 ;
10. ++*p2 ;
11. *p1 *= *p2
*°Exercice 3
Un document est défini par son titre, son auteur, et peut avoir jusqu’à sept mots-cés.
1. Définir une structure « Document » et les différentes fonctions listées ci-dessous :
§ Une fonction de création d’un document à partir de ses caractéristiques;
elle fait l’allocation dynamique d’un pointeur sur un document et renvoie
ce dernier ;
§ Une fonction de destruction d’un document ;
§ une fonction d’affichage d’un document ;
§ une fonction permettant de récupérer le titre du document ;
§ une fonction permettant de récupérer le ième mot-clé ;
§ une fonction permettant d’ajouter un mot-clé à la liste des mots-clés.
§ une fonction permettant de faire la copie d’un document
§ une fonction permettant de savoir si un document contient un certain
mot-clé ;
2. Tester votre implémentation en créant des documents et en leur appliquant ces
différentes fonctions.
*°Exercice 4
On veut écrire un programme qui comporte un ensemble de fonctions permettant de
manipuler des matrices définies comme suit :
struct matrice {
int nblignes ;
int nbcolonnes ;
float **m ;
}
Écrire:
• une fonction de création de la matrice. Cette fonction fait l’allocation dynamique de la
matrice à partir d’un nombre de lignes et d’un nombre de colonnes spécifiés, et
initialise tous ses éléments à 0 ;
• une fonction qui permet de détruire la matrice ;
• une fonction d’affichage d’une matrice;
• une fonction qui permet de faire le produit de deux matrices ;
• une fonction qui calcule la multiplication d’une matrice par un réel ;
Écrire ensuite une fonction main() qui appelle les différentes fonctions.
*°Exercice 5
On veut manipuler un ensemble d’entiers sans répétition (un ensemble est dit sans répétition
s’il ne peut pas contenir deux fois le même élément).
struct Ensemble {
*°Exercice 6
On veut écrire un programme permettant de gérer des étudiants. Chaque étudiant est défini
par son nom, son prénom, sa date de naissance, son ufr, sa classe, s’il est redoublant ou non,
les matières à suivre et les notes correspondantes représentées respectivement dans un
tableau de MAXNOTES matières et un tableau de MAXNOTES notes, un entier nb_notes
indiquant le nombre de notes valides dans le tableau des notes.
1. Déclarer dans un fichier « Date.h » un type « Date » pour des variables formées d’un
numéro de jour, d’un nom de mois et d’un numéro d’année ainsi que les fonctions de
lecture et d’écriture d’une date.
2. Déclarer dans un fichier « Etudiant.h » le type « Etudiant » correspondant ainsi que les
fonctions suivantes :
a. Saisie d’un étudiant.
b. Affichage d’un étudiant.
c. Attribution de note d’une matière à un étudiant.
d. Affichage de l’ensemble des étudiants qui ont la moyenne.
3. Écrire dans un fichier « Date.c » les définitions de fonctions correspondantes de lecture et
d’écriture d’une date. Pour la lecture, dans un premier temps, on ne se préoccupera pas
de la validité de la date entrée.
4. Écrire dans un fichier « Etudiant.c » les définitions de fonctions correspondantes.
5. Dans le fichier « main.c », il faudra saisir un nombre N d’étudiants, attribuer des notes aux
différentes matières, calculer la moyenne de chaque étudiant et afficher l’ensemble des
passants.
6. On voudrait maintenant rajouter une fonction qui permet de retrouver la note d’un
étudiant pour une matière. Expliquer comment le faire et écrire la fonction.
7. Proposez une autre représentation qui permet de gérer plus facilement les matières et les
notes correspondantes
Exercice 7
Une bibliothèque est définie par nom, son université d’appartenance et une liste de N livres
représentés comme suit :
Chaque livre est ainsi défini par son identifiant, son titre, son auteur et sa discipline.
NB : le programme sera écrit sous forme modulaire. On aura ainsi les différents fichiers :
« Bibliotheque.h », « Bibliotheque.c » et « main.c ».
*°Exercice 8
On considère les fonctions suivantes de calcul de surface de différentes figures auxquelles on
attribut respectivement les numéros 1, 2, et 3 :
double surf_rect (double a, double b) { return a*b ; }
double surf_tria (double a, double b) { return a*b/2 ; }
double surf_disq (double a, double b) { return 3.14*a*a ; }
On voudrait écrire un programme qui lit un numéro et deux réels correspondants aux
arguments des fonctions et selon le numéro, appelle la fonction correspondante.
On considèrera pour cela qu’on dispose d’un tableau dont chaque élément est constitué de
deux champs :
• Le numéro de la fonction ;
• L’adresse de la fonction