exercices corrigés en c++.docx
TRANSCRIPT
-
8/11/2019 Exercices corrigs en C++.docx
1/70
Exercices corrigs en C,C++,Java,Algoritmique,Modlisation UML,Linux oracle et rseau informatique
Accueil
Algorithmique
Langage C
Langage C++
JAVA
Modlisation UML
Systme d'exploitation Linux
Votre pub ici avec Pubdirecte.com
Langage C++
La surcharge des oprateurs en langage C++
Exercice 1 :
Dfinir une classe permettant dadditionner, de soustraire, de multiplier, de diviser et de donnerloppos ( -) des fractions (rationnels comprenant numrateur et dnominateur) en utilisant la
surcharge de ces oprateurs.Crer un programme permettant de tester cette classe.
Solution :
#include
class operation{
float num;
-
8/11/2019 Exercices corrigs en C++.docx
2/70
float deno;
public:
operation(float numerateur=1, float denominateur=1);
friend operation operator+(operation fct1, operation fct2);
friend operation operator-(operation fct1, operation fct2);
friend operation operator* (operation fct1, operation fct2);
friend operation operator/(operation f1, operation f2);
void affiche();
};
operation::operation (float numerateur, float denominateur){
num= numerateur;
deno=denominateur;
}
operation operator+ (operation fct1, operation fct2){ //ressemble a constructeur par
copie
operation res;
res.deno= fct1.deno*fct2.deno;
res.num=(fct1.num*fct2.deno)+(fct2.num*fct1.deno);
return res;
}
operation operator- (operation fct1, operation fct2){ //ressemble a constructeur par
copie
operation res;
res.deno= fct1.deno*fct2.deno;
res.num=(fct1.num*fct2.deno)-(fct2.num*fct1.deno);
return res;
}
-
8/11/2019 Exercices corrigs en C++.docx
3/70
operation operator* (operation fct1, operation fct2){ //ressemble a constructeur par
copie
operation res;
res.deno= fct1.deno*fct2.deno;
res.num=fct1.num*fct2.num;
return res;
}
operation operator/(operation f1, operation f2) {
operation res;
if(f2.num == 0) {
res.num = 0;
res.deno = 1;
cout
-
8/11/2019 Exercices corrigs en C++.docx
4/70
operation c;
c=a+b;
c.affiche();
c=a-b;
c.affiche();
c=a*b;
c.affiche();
c=a/b;
c.affiche();
}
Exercice 2 :
Soit la classe vecteur3d qui contient les coordonnes du vecteur (float), un constructeur initialisantles donnes membres avec des valeurs par dfaut 0.
Il faut dfinir loprateur + pour quil fournisse la somme de deux vecteurs et loprateur binaire *pour quil fournisse le produit scalaire de deux vecteurs.
Crer un programme permettant de tester cette classe.
Solution :
#include
class vecteur3d{
float x;float y;
float z;
public:
vecteur3d(float x1=0, float y1=0, float z1=0);
friend vecteur3d operator+(vecteur3d vect1, vecteur3d vect2);
friend vecteur3d operator*(vecteur3d vect1, vecteur3d vect2);
-
8/11/2019 Exercices corrigs en C++.docx
5/70
void affiche();
};
vecteur3d::vecteur3d(float x1, float y1, float z1){
x=x1;
y=y1;
z=z1;
}
vecteur3d operator+(vecteur3d vect1, vecteur3d vect2){
vecteur3d result;
result.x=vect1.x+vect2.x;
result.y=vect1.y+vect2.y;
result.z=vect1.z+vect2.z;
return result;}
vecteur3d operator*(vecteur3d vect1, vecteur3d vect2){
vecteur3d result;
result.x=vect1.x*vect2.x;
result.y=vect1.y*vect2.y;
result.z=vect1.z*vect2.z;
return result;}
void vecteur3d::affiche(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
6/70
c.affiche();
c=a*b;
c.affiche();
}
Exercice 3 :
Crer une classe permettant dadditionner (surcharge de +), de soustraire(surcharge de -), de lire etdafficher des dates simples au format jj/mm (ne pas prendre en c ompte les annes bissextiles).
Solution:
#include
class date{
int jj;
int mm;
public:
date(int jour=0, int mois=0); // pas oublier d'initialiser sinon ca pose probleme
friend date operator-(date d1, date d2);
friend date operator+(date d1,date d2);
void lire();
void affiche();
};
date::date(int jour, int mois){
jj=jour;
mm=mois;
}
date operator+(date d1, date d2){
date result;
result.jj=d1.jj+d2.jj;
-
8/11/2019 Exercices corrigs en C++.docx
7/70
result.mm=d1.mm+d2.mm;
return result;
}
date operator-(date d1, date d2){
date result;
result.jj=d1.jj-d2.jj;
result.mm=d1.mm-d2.mm;
return result;
}
void date::lire(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
8/70
c=a-b;
c.affiche();
}
Exercice 4 :
Implmenter dans la classe de lexercice 3 :
- une surcharge de >> permettant dentrer le jour et le mois
- une surcharge de
-
8/11/2019 Exercices corrigs en C++.docx
9/70
date& operator ++();
void lire();
void affiche();
};
date::date(int jour, int mois){
jj=jour;
mm=mois;
}
date operator+(date d1, date d2){
date result;
result.jj=d1.jj+d2.jj;
result.mm=d1.mm+d2.mm;
return result;
}
date operator-(date d1, date d2){
date result;
result.jj=d1.jj-d2.jj;
result.mm=d1.mm-d2.mm;
return result;
}
istream& operator>>(istream& tmp,date& d){
coutd.mm;
return tmp;
}
ostream& operator
-
8/11/2019 Exercices corrigs en C++.docx
10/70
cout
-
8/11/2019 Exercices corrigs en C++.docx
11/70
return *this;
}
void date::lire(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
12/70
c++;
c.affiche();
}
Exercice 5 :
Implmenter dans la classe de lexercice 2 :
- une surcharge de loprateur daffectation
- une surcharge de +=
- une surcharge de ==
- une surcharge de qui dcrmente les coordonnes du vecteur de 1
- une surcharge de >> qui permet dentrer les composantes du vecteur
- une surcharge de
-
8/11/2019 Exercices corrigs en C++.docx
13/70
vecteur3d(float x1=0, float y1=0, float z1=0);
friend vecteur3d/*valeur de retour */ operator+(vecteur3d vect1, vecteur3d
vect2);
friend vecteur3d/*valeur de retour */ operator-(vecteur3d vect1, vecteur3d
vect2);
friend vecteur3d operator*(vecteur3d vect1, vecteur3d vect2);
friend ostream& operator(istream& tmp, vecteur3d& v);
float& operator[] (int i);
vecteur3d& operator +=(vecteur3d& v);
friend bool operator==(vecteur3d v1,vecteur3d v2);
vecteur3d& operator=(vecteur3d v);
void affiche();
~vecteur3d();
};
vecteur3d::vecteur3d(float x1, float y1, float z1){
x=x1;
y=y1;
z=z1;;
adr[0]=x;
adr[1]=y;
adr[2]=z;
}
vecteur3d::~vecteur3d(){
}
float& vecteur3d::operator[] (int i){
return adr[i];
-
8/11/2019 Exercices corrigs en C++.docx
14/70
}
vecteur3d operator+(vecteur3d vect1, vecteur3d vect2){
vecteur3d result;
result.x=vect1.x+vect2.x;
result.y=vect1.y+vect2.y;
result.z=vect1.z+vect2.z;
return result;}
vecteur3d operator-(vecteur3d vect1, vecteur3d vect2){
vecteur3d result;
result.x=vect1.x-vect2.x;
result.y=vect1.y-vect2.y;
result.z=vect1.z-vect2.z;
return result;}
vecteur3d operator*(vecteur3d vect1, vecteur3d vect2){
vecteur3d result;
result.x=vect1.x*vect2.x;
result.y=vect1.y*vect2.y;
result.z=vect1.z*vect2.z;
return result;}
vecteur3d& vecteur3d::operator +=(vecteur3d& v){
x+=v.x;
y+=v.y;
z+=v.z;
return *this;
}
bool operator==(vecteur3d v1,vecteur3d v2){
if((v1.x==v2.x) && (v1.y==v2.y) && (v1.z==v2.z)) return true;
-
8/11/2019 Exercices corrigs en C++.docx
15/70
else return false;
}
vecteur3d& vecteur3d::operator=(vecteur3d v){
x=v.x;
y=v.y;
z=v.z;
return *this;
}
ostream& operator
-
8/11/2019 Exercices corrigs en C++.docx
16/70
vecteur3d d(1,1,1);
vecteur3d c;
/* a.x=a[0];
a.y=a[1];
a.z=a[2];
for (i=0;i>a[i];
}
for (i=0;i
-
8/11/2019 Exercices corrigs en C++.docx
17/70
c.affiche();
a+=b;
a.affiche();
a=b;
a.affiche();
vecteur3d k(1,1,2);
for (float i=0;i
-
8/11/2019 Exercices corrigs en C++.docx
18/70
class operation{
float num;
float deno;
public:
operation(float numerateur=1, float denominateur=1);
friend operation operator+(operation fct1, operation fct2);
friend operation operator-(operation fct1, operation fct2);
friend operation operator* (operation fct1, operation fct2);
friend operation operator/(operation f1, operation f2);
friend operation operator~(operation f);
operation operator++(int); //post
operation& operator++(); //pr
operator float();
friend operation operator^(operation op,unsigned &);
friend operation operator^(operation op, int& ex);
void affiche();
};
operation::operation (float numerateur, float denominateur){
num= numerateur;
deno=denominateur;
}
operation operator+ (operation fct1, operation fct2){ //ressemble a constructeur par
copie
operation res;
res.deno= fct1.deno*fct2.deno;
res.num=(fct1.num*fct2.deno)+(fct2.num*fct1.deno);
return res;
-
8/11/2019 Exercices corrigs en C++.docx
19/70
}
operation operator- (operation fct1, operation fct2){ //ressemble a constructeur par
copie
operation res;
res.deno= fct1.deno*fct2.deno;
res.num=(fct1.num*fct2.deno)-(fct2.num*fct1.deno);
return res;
}
operation operator* (operation fct1, operation fct2){ //ressemble a constructeur par
copie
operation res;
res.deno= fct1.deno*fct2.deno;
res.num=fct1.num*fct2.num;
return res;
}
operation operator/(operation f1, operation f2) {
operation res;
if(f2.num == 0) {
res.num = 0;
res.deno = 1;
cout
-
8/11/2019 Exercices corrigs en C++.docx
20/70
}
operation operator~(operation f){
operation res;
res.num=-f.num;
res.deno=f.deno;
return res;
}
operation& operation::operator ++(){
num++;
deno++;
return *this;
}
operation operation::operator ++(int){
operation tmp=*this;
tmp.num++;
tmp.deno++;
return tmp;
}
operation::operator float(){
float res=num/deno;
return res;
}
operation operator^(operation op, unsigned& ex){
operation tmp;
tmp.num=pow(op.num,ex);
tmp.deno=pow(op.deno,ex);
return tmp;
-
8/11/2019 Exercices corrigs en C++.docx
21/70
}
operation operator^(operation op, int& ex){
operation tmp;
tmp.num=pow(op.num,ex);
tmp.deno=pow(op.deno,ex);
return tmp;
}
void operation::affiche(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
22/70
a.affiche();
c=++a;
c.affiche();
a.affiche();
float h;
h=float(a);
cout
-
8/11/2019 Exercices corrigs en C++.docx
23/70
#include // utile pour size_t
#include
class matrice{
int nbres_lg;
int nbres_cl;
int *tab;
public:
matrice(int nblg,int nbcl);
friend ostream& operator
-
8/11/2019 Exercices corrigs en C++.docx
24/70
}
}
return tmp;
}
int* matrice::operator ()(matrice& d){
for (int l=0;l
-
8/11/2019 Exercices corrigs en C++.docx
25/70
{
cout
-
8/11/2019 Exercices corrigs en C++.docx
26/70
class vecteur{
double x;
double y;
double z;
public:
vecteur(double x1=0, double y1=0, double z1=0); //ATTENTION;-)
friend vecteur operator*(vecteur v1, vecteur v2);
friend bool operator==(vecteur v1, vecteur v2);
friend ostream& operator(istream& tmp,vecteur& v);
};
vecteur::vecteur(double x1, double y1, double z1){
x=x1;
y=y1;
z=z1;
}
vecteur operator*(vecteur v1, vecteur v2){
vecteur tmp;
tmp.x=v1.x*v2.x;
tmp.y=v1.y*v2.y;
tmp.z=v1.z*v2.y;
return tmp;
}
ostream& operator
-
8/11/2019 Exercices corrigs en C++.docx
27/70
istream& operator>>(istream& tmp,vecteur& v){
coutv.y;
tmp>>v.z;
return tmp;
}
bool operator==(vecteur v1, vecteur v2){
if ((v1.x==v2.x)&&(v1.y==v2.y)&&(v1.z==v2.z)) return true;
else return false;
}
void main(){
vecteur a(2,3,4);
vecteur b(2.2,3.3,4);
vecteur c;
c=a*b;
vecteur d;
cin>>d;
cout
-
8/11/2019 Exercices corrigs en C++.docx
28/70
Crer une classe personnel comprenant 3 donnes membres (nom, position, salaire),
un constructeur initialisant les donnes membres et une fonction affiche_personnel
qui affiche les informations sur le personnel.
Crer une classe patron drivant publiquement de la classe personnel et ayant 2
donnes membres (bonus_annuel, marque de voiture de fonction) , un constructeur
initialisant les donnes membres et une fonction affiche_patron qui affiche les
informations sur le patron (entant que membre du personnel et patron).
Crer un programme permettant de tester ces classes.
Solution:
#include
#include
class personnel{
char *nom;
char *position;
int salaire;
public:
personnel(char *nm, char *pos, int sal);
void affiche_personnel();
};
class patron:public personnel{/*class sousClasse: droit superClasse{};*/
int bonus_annuel;
char* marque_voiture;
public :
//constructeur
//sousClasse(liste des paramtres (avec ceux de la super classe); //dclaration
//sousClasse::sousClasse(liste de paramtres) : superClasse(paramtres pour
-
8/11/2019 Exercices corrigs en C++.docx
29/70
superClasse){} //dfinition
patron(int b_a, char* m_v,char *nm, char *pos, int sal);
void affiche_patron();
};
personnel::personnel(char *nm, char *pos, int sal){
cout
-
8/11/2019 Exercices corrigs en C++.docx
30/70
patron a(500,"BMW","fallon","PDG",2000);
b.affiche_personnel();
a.affiche_patron();
}
Exercice 2 :
a) Modifier les classes dfinies dans lexercice 1 en utilisant la fonction affiche dans
la classe de base et la classe drive.
Modifier le programme pour tester les modifications.
b) Crer dans le programme principal un pointeur sur la classe personnel et un objet
de la classe patron. Le pointeur sur la classe de base c ontient ladresse de la classe
drive. Appeler la fonction affiche en utilisant le pointeur sur la classe de base (il
faut quelle affiche les informations sur la classe drive).
Solution:
#include
#include
class personnel{
char *nom;
char *position;
int salaire;
public:
personnel(char *nm, char *pos, int sal);
void affiche();
};
class patron:public personnel{/*class sousClasse: droit superClasse{};*/
int bonus_annuel;
-
8/11/2019 Exercices corrigs en C++.docx
31/70
char* marque_voiture;
public :
//constructeur
//sousClasse(liste des paramtres (avec ceux de la super classe); //dclaration
//sousClasse::sousClasse(liste de paramtres) : superClasse(paramtres pour
superClasse){} //dfinition
patron(int b_a, char* m_v,char *nm, char *pos, int sal);
void affiche();
};
personnel::personnel(char *nm, char *pos, int sal){
cout
-
8/11/2019 Exercices corrigs en C++.docx
32/70
//cout
-
8/11/2019 Exercices corrigs en C++.docx
33/70
Solution:
#include
#include
class animal{
protected:
char nom[20];
public:
animal(char n[20]="");
virtual void manger();
};
class poils:public animal{
int pattes;
public:
poils(int pt=0,char n[20]="");
void manger();
};
class plumes:public animal{
int pattes;
public:
plumes(int pt=0, char n[20]="");
void manger();
};
animal::animal(char n[20]){
strcpy(nom,n);
}
void animal::manger(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
34/70
survivre"
-
8/11/2019 Exercices corrigs en C++.docx
35/70
Exercice 4 :
Crer une classe nombre forme dune unique variable entire et dune mthode
affiche_nombre, puis dfinir 3 classes drives afin dafficher la variable aux formats
hexadcimal, octal et dcimal laide dune mthode affiche_nombre.
Solution:
#include
class nombre{
protected:
int entier;
public:
nombre(int ent);
virtual void affiche_nombre();
};
class hexa:public nombre{
public:
hexa(int ent);
void affiche_nombre();
};
class octal:nombre{
public:
octal(int ent);
void affiche_nombre();
};
class decimal:nombre{
public:
decimal(int ent);
-
8/11/2019 Exercices corrigs en C++.docx
36/70
void affiche_nombre();
};
nombre::nombre(int ent){
entier=ent;
}
void nombre::affiche_nombre(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
37/70
hexa d(12);
d.affiche_nombre();
}
Exercice 5 :
a) Crer une classe Date ayant 3 paramtres jour, mois, anne.
Elle contient un constructeur initialisant les donnes membres.
Elle contient les fonctions getDay(), getMonth(), getYear(), setDay(), setMonth(),
setYear() et DateToString()
Le constructeur attend en paramtre l'anne, le mois puis le numro de jour et les affecte dansl'espace de donnes priv de l'objet.
Les mthodes accesseurs permettent respectivement de rcuprer le jour, le mois ou l'anne sousforme d'un entier (mthodes getxxx) et de changer ces mmes proprits (mthodes setxxx). Lamthode DateToString retourne une chane de caractres reprsentant la date de l'objet sur lequel at invoque cette mthode au format amricain.
b) Nous voyons que le constructeur et la mthode DateToString travaillent sur le format amricain.Comme cette classe est intgre dans les librairies d'un environnement de dveloppement, il n'estpas possible de la modifier. Quelle technique nous offre la programmation oriente objet pourpouvoir grer nos dates au format franais tout en utilisant cette classe existante qui offre en outreun ensemble d'autres services ? crire le code correspondant pour grer un constructeur et unemthode retournant une chane au format franais.
Solution:
#include
#include
#include
using namespace std;
class date{
protected:
int jour;
-
8/11/2019 Exercices corrigs en C++.docx
38/70
int mois;
int annee;
public:
date(int jr=0, int ms=0, int an=0);
void getday();
void getmonth();
void getyear();
void setday();
void setmonth();
void setyear();
virtual string datetostring();
};
class datefr:public date{
public:
datefr(int jr=0, int ms=0, int an=0);
string datetostring();
};
datefr::datefr(int jr, int ms, int an):date(jr,ms,an){}
string datefr::datetostring(){
char tab1[60]="";
char tab2[20]="";
char tab3[20]="";
cout
-
8/11/2019 Exercices corrigs en C++.docx
39/70
//cout
-
8/11/2019 Exercices corrigs en C++.docx
40/70
void date::setyear(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
41/70
cout
-
8/11/2019 Exercices corrigs en C++.docx
42/70
char nom[20];
char prenom[20];
int age;
public:
personne(char n[20]="",char p[20]="",int a=0) {
strcpy(nom,n);
strcpy(prenom,p);
age=a;
}
void identification() {
coutnom;
coutprenom;
coutage;
}
void affiche() {
cout
-
8/11/2019 Exercices corrigs en C++.docx
43/70
etudiant(char n[20],char p[20],int a,char c[5],int *no):personne(n,p,a){
strcpy(cours,c);
notes=new int [5];
}
void affect_etudiant() {
personne::identification();
menu_etudiant();
for(int i=0;i
-
8/11/2019 Exercices corrigs en C++.docx
44/70
moy=moy+notes[i];
}
cout
-
8/11/2019 Exercices corrigs en C++.docx
45/70
cin>>tarif_horraire;
}
void affiche() {
int total_heure=0,total_salaire=0;
personne::affiche();
cout
-
8/11/2019 Exercices corrigs en C++.docx
46/70
};
void main() {
cout
-
8/11/2019 Exercices corrigs en C++.docx
47/70
Lhritage multiple en programmation C++
Exercice 1 :
a) Crer une classe volante qui a comme donne membre nombre_ailes et qui a
un constructeur, un destructeur et une fonction affiche
b) Crer une classe animal qui a comme donnes membres nombre_pattes et type_pelage et qui aun constructeur, un destructeur et une fonction affiche.
c) Crer une classe oiseau qui drive publiquement des classes volante et animal.
Elle a comme donne membre nombre_oeufs et qui a un constructeur, un destructeur et unefonction affiche qui affiche la donne membre et qui fait appel aux fonctions affiche des classes debase.
d) Crer un programme qui cre un objet de type oiseau et teste ses fonctions.
Solution:
#include
#include
#define MAX 20
class volante{
int nombre_ailes;
public:
volante(int na=2);
~volante();
void affiche();
-
8/11/2019 Exercices corrigs en C++.docx
48/70
};
class animal{
int nombre_pattes;
char type_pelage[MAX];
public:
animal(int np=4,char *tp="");
~animal();
void affiche();
};
class oiseau:public volante,public animal{
int nombre_oeufs;
public:
oiseau(int no=1,int na=2,int np=4,char *tp="");
~oiseau();
void affiche();
};
volante::volante(int na){
nombre_ailes=na;
cout
-
8/11/2019 Exercices corrigs en C++.docx
49/70
nombre_pattes=np;
strcpy(type_pelage,tp);
cout
-
8/11/2019 Exercices corrigs en C++.docx
50/70
o.affiche();
cin>>k;
}
Exercice 2 :
a) Crer une classe moniteur comprenant :
- les donnes membres : type (chane de caractres), couleurs (long), x_reso(int) et y-reso(int)
- un constructeur initialisant les donnes membres
- une fonction montrer_moniteur qui affiche les informations sur le Moniteur
b) Crer une classe carte_mere comprenant :
- les donnes membres : processeur(int), vitesse(int) et ram(int).
- un constructeur initialisant les donnes membres.
- une fonction montrer_carte qui affiche les informations sur la carte.
c) Crer une classe ordinateur drivant publiquement des classes moniteur et
carte_mere et qui contient :
- les donnes membres :nom(chanes de caractres), hd(int),lecteur(float)
- un constructeur initialisant les donnes membres
- une fonction montrer_ordinateur qui affiche les informations sur
lordinateur et appelle les fonctions montrer_moniteur et montrer_carte.
d) Crer un programme qui cre un objet ordinateur et qui affiche les informations sur cet
objet
e) Remplacer les fonctions montrer_moniteur, montrer-carte et montrer_ordinateur par 3 fonctionsappeles montrer.Faire les modifications ncessaires au bon fonctionnement du programme.
-
8/11/2019 Exercices corrigs en C++.docx
51/70
Solution:
//2.a,b,c,d
#include
#include
class moniteur{
char type[5];
long int couleur;
int x_reso;
int y_reso;
public:
moniteur(char tp[5]="", long int coul=0, int x=0, int y=0);
void montrer_moniteur();
};
class carte_mere{
int processeur;
int vitesse;
int ram;
public:
carte_mere(int pro=0, int vi=0, int rm=0);
void montrer_carte();
};
class ordinateur:public moniteur, carte_mere{
char nom[10];
int hardisk;
float lecteur;
public:
ordinateur(char nm[10], int hd, float lct,char tp[5],long int coul, int x, int y,int
-
8/11/2019 Exercices corrigs en C++.docx
52/70
pro, int vi, int rm);
//attention ne pas oublier
void montrer_ordinateur();
};
moniteur::moniteur(char tp[5], int long coul, int x, int y){
strcpy(type,tp);
couleur=coul;
x_reso=x;
y_reso=y;
}
void moniteur::montrer_moniteur(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
53/70
y,int pro, int vi, int rm): moniteur(tp,coul,x,y),carte_mere(pro,vi,rm){
//je mets public a chak fois... erreur de syntaxe
strcpy(nom,nm);
hardisk=hd;
lecteur=lct;
}
void ordinateur::montrer_ordinateur(){
moniteur::montrer_moniteur();
carte_mere::montrer_carte();
cout
-
8/11/2019 Exercices corrigs en C++.docx
54/70
#include
#include
class moniteur{
char type[5];
long int couleur;
int x_reso;
int y_reso;
public:
moniteur(char tp[5]="", long int coul=0, int x=0, int y=0);
void montrer();
};
class carte_mere{
int processeur;
int vitesse;
int ram;
public:
carte_mere(int pro=0, int vi=0, int rm=0);
void montrer();
};
class ordinateur:public moniteur, carte_mere{
char nom[10];
int hardisk;
float lecteur;
public:
ordinateur(char nm[10], int hd, float lct,char tp[5],long int coul, int x, int y,int
pro, int vi, int rm);
//attention ne pas oublier
-
8/11/2019 Exercices corrigs en C++.docx
55/70
void montrer();
};
moniteur::moniteur(char tp[5], int long coul, int x, int y){
strcpy(type,tp);
couleur=coul;
x_reso=x;
y_reso=y;
}
void moniteur::montrer(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
56/70
strcpy(nom,nm);
hardisk=hd;
lecteur=lct;
}
void ordinateur::montrer(){
moniteur::montrer();
carte_mere::montrer();
cout
-
8/11/2019 Exercices corrigs en C++.docx
57/70
- un constructeur initialisant la donne membre
- une fonction montrer qui affiche les informations sur le poste de travail en faisant appel la
fonction montrer de la classe ordinateur.
Solution:
#include
#include
class moniteur{
char type[5];
long int couleur;
int x_reso;
int y_reso;
public:
moniteur(char tp[5]="", long int coul=0, int x=0, int y=0);
void montrer();
};
class carte_mere{
int processeur;
int vitesse;
int ram;
public:
carte_mere(int pro=0, int vi=0, int rm=0);
void montrer();
};
class ordinateur:public moniteur, carte_mere{
char nom[10];
int hardisk;
-
8/11/2019 Exercices corrigs en C++.docx
58/70
float lecteur;
public:
ordinateur(char nm[10], int hd, float lct,char tp[5],long int coul, int x, int y,int
pro, int vi, int rm);
//attention ne pas oublier
void montrer();
};
class poste_travail:public ordinateur{
char syst_exploi[10];
public:
poste_travail(char s_e[10],char nm[10], int hd, float lct,char tp[5],long int coul, int x,
int y,int pro, int vi, int rm);
void montrer();
};
poste_travail::poste_travail(char s_e[10],char nm[10], int hd, float lct,char tp[5],long
int coul, int x, int y,int pro, int vi, int rm):ordinateur(nm,hd,lct,tp,coul,x,y,pro,vi,rm){
strcpy(syst_exploi,s_e);
}
void poste_travail::montrer(){
ordinateur::montrer();
cout
-
8/11/2019 Exercices corrigs en C++.docx
59/70
}
void moniteur::montrer(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
60/70
cout
-
8/11/2019 Exercices corrigs en C++.docx
61/70
- une fonction affiche qui affiche les informations sur lordinateur et qui appelle la fonction
affiche de la classe objetassure
c) Crer une classe bagage drivant publiquement de la classe objetassur et comprenant :
- les donnes membres : type (chane de caractres), poids (float)
- un constructeur initialisant les donnes membres
- une fonction affiche affichant les informations sur le bagage et
appelant la fonction affiche de la classe objetassure.
d) Crer une classe ordinateurportable drivant publiquement des classes ordinateur et bagage
et comprenant :
- les donnes membres poids (float) et epaisseur (float)
- un constructeur initialisant les donnes membres
- une fonction affiche qui affiche les informations sur lordinateur portable et qui appelle lesfonctions affiche des classes bagage et ordinateur
e) Crer un programme qui cre un objet ordinateurportable et qui affiche les informations sur
cet objet
Remarque : lordinateur portable doit bnficier des 2 assurances, lune contre le
vol (en tant quordinateur) et lautre contre la perte (en tant que bagage).
Solution:
#include
#include
#define MAX 20
class objetassure{
float montant;
char type[MAX];
public:
objetassure(float mt=0.0,char tp[MAX]="");
void affiche();
-
8/11/2019 Exercices corrigs en C++.docx
62/70
};
class ordinateur:public virtual objetassure{
int ram;
int hardisk;
public:
ordinateur(int rm=0,int hd=0,float mt=0.0,char tp[MAX]="");
void affiche();
};
class bagage:virtual public objetassure{
char type1[MAX];
float poids;
public:
bagage(char tp1[MAX]="",float pd=0,float mt=0.0,char tp[MAX]="");
void affiche();
};
class ordinateurportable:public ordinateur,public bagage{
float poids1;
float epaisseur;
public:
ordinateurportable(float pd1=0.0,float epaiss=0.0,int rm=0,int hd=0,char
tp1[MAX]="",float pd=0.0);
//pas obligation de mettre les autres paramtres de objetassure
//ici je ne le fais pas mais pour afficher il vaudrait mieux ;-)
void affiche();
};
objetassure::objetassure(float mt,char tp[MAX]){
montant=mt;
-
8/11/2019 Exercices corrigs en C++.docx
63/70
strcpy(type,tp);
}
void objetassure::affiche(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
64/70
epaisseur=epaiss;
}
void ordinateurportable::affiche(){
ordinateur::affiche();
bagage::affiche();
cout
-
8/11/2019 Exercices corrigs en C++.docx
65/70
Solution:
#include
class vecteur3d{
int x;
int y;
int z;
public:
vecteur3d(int a=0,int b=0, int c=0);
friend void coincide (vecteur3d p, vecteur3d q);
};
vecteur3d::vecteur3d(int a,int b,int c){
x=a;
y=b;
z=c;
}
void coincide(vecteur3d p, vecteur3d q){
if(p.x==q.x && p.y==q.y && p.z==q.z){
cout
-
8/11/2019 Exercices corrigs en C++.docx
66/70
Exercice 2 :
Crer 2 classe (dont les membres donnes sont privs) :
- lune nomme vect, permettant de reprsenter des vecteurs 3 composantes de type double ;
elle comportera un constructeur et une fonction membre affiche.
- Lautre nomme matrice, permettant de reprsenter des matrices carres de dimension 3x3 ;
elle comportera un constructeur avec un argument (adresse dun tableau de 3x3 valeurs)
qui initialisera la matrice avec les valeurs correspondantes.
Raliser une fonction indpendante prod permettant de fournir le vecteur correspondant au produit
dune matrice par un vecteur.
Ecrire un programme de test.
Fournir les 2 dclarations de chacune des classes, leurs dfinitions, la dfinition de prod et leprogramme de test.
Solution:
#include
#include
class matrice;
class vect{
double x;
double y;
double z;public:
vect(double a=0,double b=0,double c=0);
void affiche();
friend vect prod(matrice b, vect a);
};
class matrice{
-
8/11/2019 Exercices corrigs en C++.docx
67/70
double tableau[3][3];
public :
//friend class a;
matrice(double tab[3][3]=0);
friend vect prod(matrice b, vect a);
};
vect::vect(double a,double b, double c){
x=a;
y=b;
z=c;
}
void vect::affiche(){
cout
-
8/11/2019 Exercices corrigs en C++.docx
68/70
}
vect prod(matrice b, vect a){
vect c;
c.x=(b.tableau[0][0]*a.x)+(b.tableau[0][1]*a.y)+(b.tableau[0][2]*a.z);
c.y=(b.tableau[1][0]*a.x)+(b.tableau[1][1]*a.y)+(b.tableau[1][2]*a.z);
c.z=(b.tableau[2][0]*a.x)+(b.tableau[2][1]*a.y)+(b.tableau[2][2]*a.z);
cout
-
8/11/2019 Exercices corrigs en C++.docx
69/70
Envoyer par e-mail
BlogThis!
Partager sur Twitter
Partager sur Facebook
1 commentaire:
Djo kuro13 aot 2012 17:02
je prcise que la correction de l'exercice 3 celle des dates est incorrecte
Rpondre
Charger la suite...
Accueil
Inscription : Messages (Atom)
Votre pub ici avec Pubdirecte.com
-
8/11/2019 Exercices corrigs en C++.docx
70/70
Partager
Membres
Archives du blog
2012 (18)
2011 (20)
novembre (15)
octobre (5)
Application interactive permettant la compression ...
mini projet : gestion des vols avec visual basic ....
Traage de courbe en langage C avec la bibliothqu...
Mini projet en langage C : les signaux de fume
mini projet en langage c++ : la gestion des vols
Nombre total de pages vues
Wikio
blog directory Annuaire YOUPINET
bloglog Union - Rencontre sincre en France sur notre service annonces rencontre - Lienspartenaires
Exercices corrigs en C,C++,Algoritmique,Modlisation UML,Linux Ajoutez votre lien
Tous droits reservs. Modle Picture Window. Modles d'images de sololos. Fourni par Blogger.