Exercice 42
Énoncé
Écrire un programme allouant dynamiquement un emplacement pour un tableau
d’entiers, dont la taille est fournie en donnée. Utiliser ce tableau pour y placer des
nombres entiers lus également 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.
Il nous faut utiliser deux variables (adt1 et adt2) de type pointeur sur des entiers pour
conserver les adresses des emplacements alloués pour chacun des deux tableaux
d’entiers.
#include
using namespace std ;
main()
{ int nval ; // nombre de valeurs
int * adt1, * adt2 ; // attention, pas int * adt1, adt2
do { cout << "combien de valeurs : " ;
cin >> nval ;
}
while (nval <= 0) ; // on refuse les valeurs négatives
/* allocation premier tableau, lecture valeurs */
adt1 = new int [nval] ;
cout << "donnez " << nval << " valeurs \n ";
for (int i = 0 ; i> adt1[i] ; // ou cin * (adt1+i)
/* allocation second tableau, calcul des carrés */
adt2 = new int [nval] ;
for (int i = 0 ; i /* suppression premier tableau, affichage valeurs */
delete adt1 ;
cout << "voici leurs carrés : \n" ;
for (int i = 0 ; i /* suppression du second tableau */
delete adt2 ;
}
Notez que, dans l’appel de l’opérateur delete, il n’est pas nécessaire de préciser le
nombre d’éléments du tableau d’entiers à libérer. Il n’en ira plus de même, lorsque l’on
aura affaire à des tableaux d’objets.
Voici un exemple d’exécution de ce programme :
combien de valeurs : 0
combien de valeurs : -2
combien de valeurs : 8
donnez 8 valeurs
91
Précédent

- 92/398

Suivant