Académique Documents
Professionnel Documents
Culture Documents
TD - TP - 4 - Allo Dynamique - Structures - Fichiers
TD - TP - 4 - Allo Dynamique - Structures - Fichiers
Exercice 1
1- Ecrire les fonctions suivantes :
- int **alloc_int_mtx(int l,int c)permettant de réserver de l’espace mémoire pour une
matrice de l lignes et de c colonnes (Elle doit retourner l’adresse du bloc réservé).
- void lecture_int_mtx(int **mat,int l, int c) qui permet de lire les éléments
d’une matrice mat de dimensions (l,c).
- int nbOccurrences(int **mat,int l, int c,int x0) qui reçoit l’adresse de
début d’une matrice mat, ses dimensions et un entier x0, et retourne le nombre d’occurrences de x0
dans mat.
- void liberer_int_mtx(int **mat,int l) qui permet de libérer l’espace mémoire
alloué à la matrice mat dont le nombre de lignes est l.
2- Ecrire un programme de test.
Exercice 2
Ecrire une fonction qui reçoit 3 entiers n,m et p, réserve de l’espace mémoire nécessaire au stockage un tableau de
caractères de dimension 3, et retourne l’adresse du bloc réservé. Ecrire une fonction de libération d’un tel espace
mémoire et un programme de test.
Exercice 3 (Triangle de Pascal)
1- Ecrire une fonction PascalStat qui reçoit une matrice carrée P et son ordre 𝑛 et remplit la matrice
triangulaire inférieure de P par les valeurs du triangle de Pascal. Par exemple, pour n = 5, la matrice
triangulaire inférieure de P est :
Indication : On déclarera une matrice carrée 𝑃 d’ordre (𝑛 + 1), mais on utilisera juste la matrice triangulaire
inférieure. La première colonne et la diagonale contient des 1, et 𝑃,i-,j- = 𝑃,i − 1-,j- + 𝑃,i − 1-,j − 1-
pour les valeurs des autres positions (autres que la 1ère colonne et la diagonale).
2- Ecrire une fonction AffichPascStat qui reçoit une matrice carrée P et son ordre 𝑛 et affiche les valeurs
de la matrice triangulaire inférieure de P.
3- Avec la fonction la fonction précédente, la matrice triangulaire supérieure occupe un espace mémoire non
utilisé. Pour optimiser ce dernier, écrire les fonctions suivantes :
Page 1
ENSAM-Meknès
- int **PascalAlloc (int n) qui réserve juste l’espace mémoire nécessaire au du stockage
du triangle de Pascal (matrice triangulaire inférieure) ;
- void PascalLibere(int **P,int n) qui libère l’espace mémoire réservé au triangle de
Pascal.
- void PascalDyn (int **P, int n) qui remplit P par les valeurs du triangle de Pascal ;
- void AffichPascDyn (int **P, int n) qui affiche les valeurs du triangle de Pascal
dont l’adresse de début est P et dont le nombre de ligne est n.
Exercice 4
1- Définir une structure complexe permettant de stocker la partie réelle Re et la partie imaginaire d’un nombre
complexe (Re et Im sont de type int) ;
2- Ecrire les fonctions suivantes :
- lectComplexe : permettant de recevoir un nombre complexe et remplir sa partie réelle et sa
partie imaginaire.
- afficheComplexe : permettant de recevoir un nombre complexe et afficher sa partie réelle et sa
partie imaginaire.
- Conjugue : permettant de recevoir un nombre complexe et de retourner son conjugé.
- main() : programme principal testant les fonctions précédentes.
Exercice 5
Ecrire un programme qui permet de :
- Déclarer une structure Etudiant contenant les champs numero (int), nom(chaine de caractères) et moyenne
(float) ;
- Déclarer et remplir un tableau Liste de taille n (à lire) et de type Etudiant.
- Trier le tableau Liste par ordre décroissant de la moyenne.
Exercice 6
Ecrire en utlisant un tableau dynamique les fonctions suivantes :
- allocTabEtud : fonction d’allocation d’un tableau de structures Etudiant de taille n ;
- lectTabEtud : fonction de lecture du tableau de structures Etudiant de taille n ;
- affichTabEtud : fonction d’affichage du tableau de structures Etudiant de taille n ;
- triTabEtud : fonction de tri, par ordre décroissant de la moyenne, du tableau de structures Etudiant de
taille n ;
- main() : fonction principale pour le test.
Exercice 7
THabitant = Enregistrement
Page 2
ENSAM-Meknès
Nom, prenom : chaine [20] ;
Date_naiss : date ;
Residence : Adresse ;
Fin;
Ecrire un programme C++ permettant de :
1- Remplir un tableau T de N habitants (N≤100).
2- Afficher à partir de T les adresses des habitants nés avant une année de naissance donnée.
3- Afficher les noms et les dates de naissance des habitants de la ville de ‘Meknès‘ de la région de
‘Fès Meknès‘.
4- Editer le nombre d’habitants par région.
Exercice 8
On s’intéresse à la gestion des véhicules d’un parc auto. Chaque véhicule est caractérisé par un matricule, une
marque, un modèle, une couleur, le nombre de places, une puissance fiscale.
Exercice 9
Exercice 10
1- Écrire un programme C++ qui ouvre un fichier texte en mode lecture et affiche son contenu sur la console.
2- Écrire un programme C++ qui ouvre un fichier texte en mode écriture et écrit une chaîne de caractères dans le
fichier.
Exercice 11
1- Écrire un programme C++ qui ouvre un fichier texte en mode lecture et écrit le contenu du fichier dans un autre
fichier.
2- Écrire un programme C++ qui ouvre un fichier texte en mode lecture et compte le nombre de lignes dans le
fichier.
Exercice 12
Page 3
ENSAM-Meknès
1- Écrire un programme C++ qui ouvre un fichier texte en mode lecture et recherche une chaîne de caractères dans
le fichier.
2- Écrire un programme C++ qui ouvre un fichier texte en mode lecture et lit une liste de nombres dans le fichier.
3- Écrire un programme C++ qui ouvre un fichier texte en mode lecture et affiche le plus grand nombre dans le
fichier.
Page 4
ENSAM-Meknès