100% ont trouvé ce document utile (1 vote)
443 vues2 pages

Correction et analyse d'un programme C++

Le document présente deux exercices sur la programmation C++. Le premier exercice décrit un programme qui plante à l'exécution et demande d'identifier la cause du plantage et de corriger le programme. Le second exercice demande de compléter le code avec les définitions des classes POINT et SEGMENT pour faire fonctionner correctement le programme fourni.

Transféré par

anas
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
443 vues2 pages

Correction et analyse d'un programme C++

Le document présente deux exercices sur la programmation C++. Le premier exercice décrit un programme qui plante à l'exécution et demande d'identifier la cause du plantage et de corriger le programme. Le second exercice demande de compléter le code avec les définitions des classes POINT et SEGMENT pour faire fonctionner correctement le programme fourni.

Transféré par

anas
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Ibnou Zohr, Faculté des Sciences

Département d’Informatique

DS/C++/Session de rattrapage, SMI5, 2011/2012, Durée: 1h30


M. EL ANSARI

Exercice 1 : (5,5pts)

1. Le programme ci-dessous ne présente pas d’erreurs de compilation. Lors de son


exécution, Il plante (erreur d’exécution). Donner sa sortie avant d’atteindre le point
de plantage.

2. Quelles sont les causes du plantage du programme? Corriger le programme afin de


remédier au problème de plantage.

3. Donner la sortie du programme obtenue après correction.

#include <iostream>
using namespace std;
class Machin {
int bidule ;
public :
Machin() { cout <<" ++ Machin defaut " << endl ; bidule = 0; }
Machin(int b) { cout <<" ++ Machin normal " << endl ; bidule = b; }
~Machin() { cout <<" -- Machin normal " << endl ; }
} ;
class Truc {
Machin * machin ; int taille;
public :
Truc(Machin * m, int t) {
cout <<" ++ Truc normal " << endl ;
machin = new Machin[t] ;
for(int i=0; i< t; i++) machin[i].bidule = m[i].bidule;
taille = t;
}
~Truc() { cout << "--Truc normal "<< endl ;
if (machin != NULL) delete machin ;
}
Truc(Truc & truc){
cout <<" ++ Truc clonage " << endl ;
taille = [Link]; machin = new Machin[taille];
for(int i=0;i<taille;i++) machin[i].bidule = [Link][i].bidule;
}} ;
int main() {
Machin *n;
n = new Machin[3];
Truc x(n,3);
Truc y(x);
delete n;
return 0;
}
Exercice 2 : (14,5pts)
Soit le programme C++ suivant:

int main(){
POINT a(7,7), b, c(2), d(c); // creation de deux points a=(7,7) , b=(0,0)
// , c=(2,0) et d=(2,0)
cout<<"[Link]();cout<<endl; // affichage du point a sous le format : (7,7)
b = a + c; // c = (9,7)
[Link](); // (9,7)
cin>>a; // lecture de a
cout<<c; // affichage de c
c += a; // c = c + a;
int k = a > b; // donne 1 si [Link]> [Link] et 0 sinon
if (a>b) cout<<" a est superieur "<<endl;
else cout<<" b est superieur"<<endl;
SEGMENT s1(1,2,6,9); // creation du segment s1 a partir des points (1,2) et (6,9)
[Link](); cout<<endl; // affichage du segment s1
SEGMENT s2(a,b); // creation de s1 a partir des 2 points a et b
SEGMENT S3(s2);
SEGMENT s2(a,b); // creation du segment s2
[Link]()<<endl;
// verifier si le point (4,4) appartient au segment s2
if (appartient(POINT(4,4),s2))
cout<<"le point (4,4) appartient au segment s1\n";
else
cout<<"le point (4,4) n’appartient pas au segment s1\n";
cout<<"le nombre de points crees : "<<POINT::nombre_points()<<endl;
cout<<"le nombre de segments crees : "<<SEGMENT::nombre_segments()<<endl;
return 0;
}

Le programme ci-dessus fait appel à deux classes à savoir la classe POINT et la classe SEGMENT.
Donner les fichiers interfaces ".h" et implémentations ".cpp" correspondant aux classes
POINT et SEGMENT pour que le programme tourne correctement. Après exécution le pro-
gramme affichera le résultat ci-dessous.

Figure 1: Résultat d’exécution du programme ci-dessus.

Vous aimerez peut-être aussi