Vous êtes sur la page 1sur 5

UNIVERSITE GASTON BERGER ANNEE UNIVERSITAIRE 2021/ 2022

DE SAINT-LouIS

UFR DE SCIENCES APPLIQUEES


ET DETECHNOLOGIE

SECTION INFORMATIQUE

LICENCE SCIENCE ET TECHNOLOGIE 2


Algorithmique et Programmation 3
(Langage C)
Fiche de TD/TP/TPE
Notations
Exercice TD
Exercice TP
Exercice TD/TP

Pointeurs, allocation dynamique, modularité


*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 L7 indique que le contenu de xest 7


Soit lasuite d'instructions suivante:
1. int x=15, y =23, z[10]=(23, 5, 67, 2, 78, -5, 42, 56, 89, 3}
2. int *pi ;
3. pi = &x;
4. y=*pi +5;
5. *pi += 1;
6. pi =&z[0];
7. y=*i -3;
8. pi = pi +3;
9. x=*pi +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.
VariableAdresseContenu
int x,y,Z; X 20000 23'/ ...
int *p1, *p2; 20002 472/ ...
1. x=23;
20004
2. y-47;
3. z=100; pl 30000
p2 40000
4. pl=&x ;
5. p2-&z ;
6. *pl =(*p2)++;
7. pl-p2;
8. p2-&y;
9. *pl = *p2;
10. ++*p2;
11. *pl *= *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 siun document contient un certain
mot-clé ;
2. Tester votre implémentation en créant des documents et en leur appliquant ces
différentes fonctions.
*OExercice 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 lamatrice. Cette fonction fait I'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 quipermet de détruire la matrice;
une fonction d'affichage d'une matrice;
une fonction quipermet de faire le produit de deux matrices ;
une fonction quicalcule la multiplication d'une matrice par un réel;
Écrire ensuite une fonction main() quiappelle 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).
Pour cela, on considère la structure «Ensemble » suivante définie dans le fichier
« ensemble.h »:

struct Ensemble{
int m_max; |/ nombre maximal d'éléments

int m_cardinal; l/ cardinal de l'ensemble (nombre d'éléments)

int *m_elements;// les éléments de l'ensemble

Les opérations sur les ensembles devront permettre:


i) de créer un ensemble pouvant contenir au plus un nombre Nd'éléments passé en
argument,
ii) de déterminer le cardinal d'un ensemble,

ii) d'ajouter un élément (un entier) d'un ensemble,


iv) de supprimer un élément (un entier) d'un ensemble,
iv) de tester siun ensemble contient un élément donné,
v) de détruire un ensemble,
d'afficher le contenu d'un ensemble au format E= (x1,x2,..,xn] où x1,x2,..,Xn sont
vi)
ses éléments.
ci-dessus de
1) Ecrivez dans un fichier «ensemble.c » les définitions des fonctions
création et de manipulation d'un ensemble.
2) Définir dans le fichier « main.c» une fontion « main » dans laquelle vous allez faire
appel aux fonctions déjàdéfinies. Pour cela, vous allez créer un ensemble, ajouter un
l'ensemble
certain nombre d'éléments, en supprimer un certain nombre, tester si
contient un certain élément, afficher l'ensemble et finalement le détruire.
3) Rajouter I'union et l'intersection d'ensembles;

*°Exercice 6 Chaque étudiant est défini


On veut écrire un programme permettant de gérer des étudiants.
classe, s'il est redoublant ou non,
par son nom, son prénom, sa date de naissance, son ufr, sa
respectivement dans un
les matières àsuivre et les notes correspondantes représentées nb_notes
tableau de MAXNOTES matières et un tableau de MAXNOTES notes, un entier
tableau des notes.
indiguant le nombre de notes valides dans le
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. Ecrire 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 », ilfaudra saisir un nombre Nd'étudiants, attribuer des notes aux
différentes matières, calculer la moyenne de chaque étudiant et afficher I'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

Exercice7
Une bibliothèque est définie par nom, son université d'appartenance et une liste de Nlivres
représentés comme suit :

inf23 La programmation en C Claude Delannoy Informatique

p15 L'existentialisme est un humanisme Jean Paul Sartre philosophie

infOs Java pour les nuls Barrv Burd Informatique

ang33 La ferme des animaux George Orwell Anglais

Chaque livre est ainsidéfini par son identifiant, son titre, son auteur et sa discipline.
1) Définir le type « livre » et le type « Bibliotheque ».
2) Écrire une fonction de création d'une bibliothèque àpartir de ses caractéristiques ; elle
renvoie un pointeur sur la bibliothèque ;à la création, la bibliothèque est vide ;
3) Écrire une fonction de destruction de la bibliothèque;
4) Écrire une fonction qui rajoute un livre à labibliothèque ;
5) Écrire une fonctionqui recherche un livre par son identifiant :
NB: Pour les deux fonctions, il faudra écrire une version avec les
tableaux et une autre avec
les pointeurs
*°Exercice &
On veut écrire un programme qui permet de saisir et garder un ensemble de N phrases dans un
tableau de pointeurs sous la forme suivante :

S'il vous plaît, faites le tour

Demain sera un autre jour

Aujourd'hui, il fait bon

Le tableau doit rester constamment trié dans l'ordre croissant


(ordre
Ainsi, la lecture de la chaîne « Aujourd'hui, il fait bon » entraîne le alphabétique).
tableau à partir du début puisque la phrase est « alphabétiquement décalage
»
des pointeurs du
sera un autre jour ». Notez que ce sont pointeurs qui se déplacent et pas inférieure à « Demain
Écrire les fonctions suivantes : les chaînes.
1. Création du tableau des phrases. A la création, il n'y a
pas de phrases ;
2. Ajout d'une phrase au tableau ;
3. Affichage des phrases du tableau
*°Exercice 9
On considère les fonctions suivantes de calcul de surface de
attribut respectivement les numéros 1, 2, et 3 : différentes figures auxquelles on
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
On considèrera pour cela qu'on dispose d'un tableaufonction
dont
correspondante.
deux champs : chaque élément est constitué de
Le numéro de la fonction;
L'adresse de la fonction

Vous aimerez peut-être aussi