Exercices corrigés en C++.docx

download Exercices corrigés en C++.docx

of 70

Transcript of Exercices corrigés en C++.docx

  • 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.