Exercices C++
Soit une classe vecteur3d ayant 3
données membres privées, de type entier, les composantes du vecteur (x,y,z).
Elle a un constructeur permettant d’initialiser les données membres.
Ecrire une fonction indépendante,
coincide, amie de la classe vecteur3d, permettant de
savoir si 2 vecteurs ont mêmes
composantes.
Si v1 et v2 désignent 2 vecteurs de
type vecteur3d, écrire le programme qui permet de
tester l’égalité de ces 2 vecteurs.
Exercice
2 :
Créer 2 classe (dont les membres
données sont privés) :
-
l’une nommée vect, permettant de représenter des
vecteurs à 3 composantes de type double ;
-
elle comportera un constructeur et une fonction membre
affiche.
-
L’autre nommée matrice, permettant de représenter des
matrices carrées de dimension 3x3 ;
-
elle comportera un constructeur avec un argument
(adresse d’un tableau de 3x3 valeurs)
-
qui initialisera la matrice avec les valeurs
correspondantes.
Réaliser une fonction indépendante
prod permettant de fournir le vecteur correspondant au produit d’une matrice
par un vecteur.
Ecrire un programme de test.
Fournir les 2 déclarations de chacune
des classes, leurs définitions, la définition de prod et le programme de test.
Exercice
3 :
Créer une classe personnel comprenant
3 données membres (nom, position, salaire),
un constructeur initialisant les
données membres et une fonction affiche_personnel
qui affiche les informations sur le
personnel.
Créer une classe patron dérivant
publiquement de la classe personnel et ayant 2
données membres (bonus_annuel, marque
de voiture de fonction) , un constructeur
initialisant les données membres et
une fonction affiche_patron qui affiche les
informations sur le patron (entant que
membre du personnel et patron).
Créer un programme permettant de
tester ces classes.
Exercice
4 :
a) Modifier les classes définies dans
l’exercice 1 en utilisant la fonction affiche dans
la classe de base et la classe
dérivée.
Modifier le programme pour tester les
modifications.
b) Créer dans le programme principal
un pointeur sur la classe personnel et un objet
de la classe patron. Le pointeur sur
la classe de base contient l’adresse de la classe
dérivée. Appeler la fonction affiche
en utilisant le pointeur sur la classe de base (il
faut qu’elle affiche les informations
sur la classe dérivée).
Exercice
5 :
Créer une classe nombre formée d’une
unique variable entière et d’une méthode
affiche_nombre, puis définir 3 classes
dérivées afin d’afficher la variable aux formats
hexadécimal, octal et décimal à l’aide
d’une méthode affiche_nombre.
Correction
Correction
Exercice 1:
#include <iostream.h>
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<<"Les 2 vecteurs sont
égaux"<<endl;}
else
cout<<"FOIREUX"<<endl;}
void main(){
vecteur3d v1(3,2,5);
vecteur3d v2(3,4,5);
coincide(v1,v2);}
|
Exercice 2:
#include <iostream.h>
#include <string.h>
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{
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<<"X=
"<<x<<endl;
cout<<"Y=
"<<y<<endl;
cout<<"Z=
"<<z<<endl;
}
matrice::matrice(double tab[3][3]){
tableau[3][3]=tab[3][3];
tableau[0][0]=1;
tableau[0][1]=2;
tableau[0][2]=3;
tableau[1][0]=4;
tableau[1][1]=5;
tableau[2][1]=6;
tableau[0][2]=7;
tableau[1][2]=8;
tableau[2][2]=9;
}
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<<"le résultat de la
multiplication est
:"<<c.x<<","<<c.y<<","<<c.z<<endl;
return c;}
void main(){
vect vecteur(1,1,1);
matrice mat;
vect res;
res=prod(mat,vecteur);
}
|
Exercice 3:
#include <iostream.h>
#include <string.h>
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 paramètres (avec
ceux de la super classe); //déclaration
//sousClasse::sousClasse(liste de
paramètres) : superClasse(paramètres pour
superClasse){} //définition
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<<"constructeur"<<endl;
salaire=sal;
nom=nm;
position=pos;
}
void personnel::affiche_personnel(){
cout<<"Nom :
"<<nom<<endl;
cout<<"Position :
"<<position<<endl;
cout<<"Salaire :
"<<salaire<<endl;
}
patron::patron(int b_a, char* m_v,char
*nm, char *pos, int sal):personnel(nm, pos,sal)
{
bonus_annuel=b_a;
marque_voiture=m_v;
}
void patron::affiche_patron(){
affiche_personnel(); //pas oublier
cout<<"bonus annuel =
"<<bonus_annuel<<endl;
cout<<"Marque de voiture =
"<<marque_voiture<<endl;
}
void main(){
personnel
b("gerald","gérant",1250);
patron
a(500,"BMW","fallon","PDG",2000);
b.affiche_personnel();
a.affiche_patron();
}
|
Exercice 4:
#include <iostream.h>
#include <string.h>
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;
char* marque_voiture;
public :
//constructeur
//sousClasse(liste des paramètres (avec
ceux de la super classe); //déclaration
//sousClasse::sousClasse(liste de
paramètres) : superClasse(paramètres pour
superClasse){} //définition
patron(int b_a, char* m_v,char *nm,
char *pos, int sal);
void affiche();
};
personnel::personnel(char *nm, char
*pos, int sal){
cout<<"constructeur"<<endl;
salaire=sal;
nom=nm;
position=pos;
}
void personnel::affiche(){
cout<<"Nom :
"<<nom<<endl;
cout<<"Position :
"<<position<<endl;
cout<<"Salaire :
"<<salaire<<endl;
}
patron::patron(int b_a, char* m_v,char
*nm, char *pos, int sal):personnel(nm, pos,sal)
{
bonus_annuel=b_a;
marque_voiture=m_v;
}
void patron::affiche(){
//cout<<"Nom :
"<<nom<<endl;
//cout<<"Position :
"<<position<<endl;
//cout<<"Salaire :
"<<salaire<<endl;
personnel::affiche();
// si on ne veut pas utiliser la
résolution de portée
//on mets nos données en mode protected
cout<<"bonus annuel =
"<<bonus_annuel<<endl;
cout<<"Marque de voiture =
"<<marque_voiture<<endl;
}
void main(){
/*
personnel b("gerald","gérant",1250);
patron
a(500,"BMW","fallon","PDG",2000);
b.affiche();
a.affiche();
*/
personnel *pe=new
personnel("Fallon","PDG",2000);
peà affiche();
patron *pa=new
patron(500,"PORSCHE","Toujirat","HautPDG",2250);
paàaffiche();
}
|
Exercice 5:
#include <iostream.h>
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);
void affiche_nombre();
};
nombre::nombre(int ent){
entier=ent;
}
void nombre::affiche_nombre(){
cout<<"voici le nombre :
"<<entier<<endl;
}
hexa::hexa(int ent):nombre(ent){}
void hexa::affiche_nombre(){
cout <<" le nombre en hexa
est de : "<<hex<<entier<<endl;
}
octal::octal(int ent):nombre(ent){}
void octal::affiche_nombre(){
cout <<" le nombre en octal
est de : "<<oct<<entier<<endl;
}
decimal::decimal(int ent):nombre(ent){}
void decimal::affiche_nombre(){
cout <<" le nombre en
décimal est de : "<<dec<<entier<<endl;
}
void main(){
nombre a(12);
a.affiche_nombre();
decimal b(12);
b.affiche_nombre();
octal c(12);
c.affiche_nombre();
hexa d(12);
d.affiche_nombre();
}
|