TP 3
TP 3
TP 3
TP 3
Allocation dynamique et POO
Exercice 1
Écrire une fonction qui ne renvoie aucune valeur et qui détermine la valeur maximale et la valeur
minimale d’un tableau d’entiers (à un indice) de taille quelconque. On prévoira 4 arguments : le
tableau, sa dimension, le maximum et le minimum. Pour chacun d’entre eux, on choisira le mode de
transmission le plus approprié (par valeur ou par référence). Dans le cas où la transmission par
référence est nécessaire, proposer deux solutions : l’une utilisant effectivement cette notion de
référence, l’autre la « simulant » à l’aide de pointeurs. Écrire un petit programme d’essai
Exercice 2
Écrire un programme allouant dynamiquement un emplacement pour un tableau d’entiers, de taille
10. Utiliser ce tableau pour y placer des nombres entiers lus en donnée. Créer ensuite
dynamiquement un nouveau tableau destiné à recevoir les carrés des nombres contenus dans le
premier.
Supprimer le premier tableau, afficher les valeurs du second et supprimer le tout. On ne cherchera
pas à traiter un éventuel problème de manque de mémoire
Exercice 3
Réaliser une classe point permettant de manipuler un point d’un plan. On prévoira :
Écrire, par ailleurs, un petit programme d’essai (main) déclarant un point, l’affichant, le déplaçant et
l’affichant à nouveau.
Programmation C++ 2023-2024
Exercice 4 :
Dans un premier temps, imaginez et implémenter en C++ une classe qui permet de représenter un
livre. Pour chaque livre, vous devez stocker ces informations : le titre, l’auteur, la date de parution et
le prix indicatif. Il est recommandé de séparer votre programme en un fichier source (cpp) et un
fichier entête (h).
Vous testerez votre classe en développant un petit programme qui demande à l’utilisateur de rentrer
les informations d’un livre et qui les lui affiche ensuite.
Maintenant que votre classe et votre programme de test sont tous deux fonctionnels, il est temps
d’améliorer votre programme pour gérer plusieurs livres.
1. Votre application devra donc demander à l’utilisateur le nombre de livres qu’il souhaite
ajouter dans la bibliothèque, puis demander la saisie des informations (indication : vous
pouvez utiliser un tableau d’objets).
2. Vous afficherez ensuite la liste des ouvrages enregistrés en demandant à l’utilisateur d’en
sélectionner un afin de lui afficher les informations détaillées du livre choisi.
Par ailleurs, l’utilisateur doit pouvoir réaliser cette opération autant de fois qu’il le souhaite,
vous continuerez donc à afficher ce menu jusqu’à ce qu’il décide de quitter le programme.
Programmation C++ 2023-2024
Exercice 5:
Créer une classe Etudiant permettant de représenter un étudiant par son nom et son prénom (type
string), son identifiant (type unsigned int) et ses notes (tableau dynamique de float).
La classe Etudiant doit disposer d’un constructeur permettant d’initialiser son nom, son prénom et
son identifiant ainsi que le nombre de notes prévues. Le nombre de notes prévues aura une valeur
par défaut de 5. Ce constructeur aura entre autres pour rôle d’allouer dynamiquement l’espace
nécessaire pour le tableau de notes.
La classe Etudiant doit disposer d’une méthode ajouterNote(float note) permettant d’ajouter une
nouvelle note (attention à la taille maximum du tableau). De quel(s) autre(s) attribut(s) a-t-on besoin
d’ajouter à la classe Etudiant pour pouvoir gérer correctement l’ajout d’une note ? Programmer cette
méthode.
Ajouter un constructeur de copie qui permet de créer une nouvelle instance de la classe Etudiant à
partir d’une instance existante en recopiant son état (attention au traitement du tableau de notes).
Ajouter le destructeur de la classe Etudiant.
Que doit faire ce destructeur avant disparition de l’instance ?
Écrire un programme principal qui utilise toutes les fonctionnalités de la classe Etudiant.
Programmation C++ 2023-2024
Exercice 6:
Ecrire une classe Rectangle comportant deux attributs de type réel double précision : largeur et
hauteur.
Cette classe doit également disposer :
• d’un constructeur qui fait également office de constructeur par défaut (largeur et hauteur
prendront alors la valeur 0.0 par défaut) ;
• d’une méthode périmètre() retournant le périmètre du rectangle ;
• d’une méthode surface() retournant la surface du rectangle ;
• d’une méthode affiche() qui affiche à l’écran « Rectangle L:l H:h » où l et h sont les valeurs
des attributs largeur et hauteur respectivement.
Attention, les méthodes demandées doivent pouvoir être appliquées à une instance non modifiable
de rectangle (const Rectangle).
On ne souhaite pas que l’utilisateur de cette classe (fonction externe ou autre classe) puisse accéder
directement aux attributs. Proposez les mécanismes nécessaires pour assurer cette protection des
données mais permettre quand même de consulter et de modifier ces valeurs (via des accesseurs et
mutateurs).
Écrire un programme principal dans un autre fichier qui demande à l’utilisateur de saisir la taille d’un
rectangle, crée une instance de la classe Rectangle de la taille saisie et affiche le périmètre et la
surface de ce rectangle.