Vous êtes sur la page 1sur 4

Université Moulay Ismaïl 2023-2024

ENSAM – Meknès 2ème Année

TD/TP N° 4 – Allocation dynamique,


Structures et Fichiers (C++)

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.

4- Ecrire un programme testant toutes les fonctions précédentes.

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

Considérons les types d’enregistrements suivants :


Type TDate = Enregistrement
Jour, mois, année : entier ;
Fin;
TAdresse = Enregistrement
Numéro : entier ;
Rue : chaine [50] ;
Ville : chaine [20] ;
Wilaya : chaine [20] ;
Cr : entier ; { Code Region }
Fin;

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.

1- Donner l’enregistrement permettant de décrire un véhicule.


2- Décomposer le matricule en ses composants élémentaires puis donner la nouvelle structure de
l’enregistrement.
3- Ecrire un programme C++ qui permet de :
- Stocker les informations d’un parc auto regroupant au max 50 véhicules en utilisant les structures
adéquates ;
- Etablir la liste (matricule, marque, modèle, puissance) des véhicules d’une couleur donnée ;
- Etablir un tableau statistique contenant le nombre de véhicules immatriculés par région ;

Exercice 9

Soit la structure suivante qui gère dynamiquement des tableaux d’entiers

Créer des fonctions C++ suivantes pour :


1- Affichage de contenu du tableau
2- Ajouter une nouvelle valeur à la fin
3- Ajouter une nouvelle valeur à un indice donné
4- Supprimer une valeur à un indice donné

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

Vous aimerez peut-être aussi