Cours:PooTD1 qtcreator : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
Ligne 39 : Ligne 39 :
 
* Ajouter des méthodes : produit de deux complexes, conjugué, …
 
* Ajouter des méthodes : produit de deux complexes, conjugué, …
 
* Le cas échéant, vous pouvez reprendre le TD de S1 sur les nombres complexes : [[Cours:TdComplexe]]
 
* Le cas échéant, vous pouvez reprendre le TD de S1 sur les nombres complexes : [[Cours:TdComplexe]]
 +
 +
 +
=Une correction possible=
 +
<source lang=cpp>
 +
#include <iostream>
 +
#include <math.h>
 +
 +
using namespace std;
 +
 +
class Complexe
 +
{
 +
public :
 +
    double re;
 +
    double im;
 +
 +
    Complexe(double r, double i)
 +
    {
 +
        re = r;
 +
        im = i;
 +
    }
 +
 +
    Complexe()
 +
    {
 +
        re = 0;
 +
        im = 0;
 +
    }
 +
 +
    Complexe add(Complexe z)
 +
    {
 +
        Complexe res;
 +
        res.setRe(re+z.re);
 +
        res.setIm(im+z.im);
 +
        return res;
 +
    }
 +
 +
    double module()
 +
    {
 +
        double m;
 +
        m = sqrt(re*re+im*im);
 +
        return m;
 +
    }
 +
 +
    void affiche()
 +
    {
 +
        cout << re;
 +
        if (im >=0)
 +
        {
 +
            cout << "+";
 +
        }
 +
        cout << im << ".i"  <<endl;
 +
    }
 +
    void setRe(double r)
 +
    {
 +
        re = r;
 +
    }
 +
    void setIm(double i)
 +
    {
 +
        im = i;
 +
    }
 +
    void conjugue()
 +
    {
 +
        im = -im;
 +
    }
 +
 +
 +
};
 +
 +
 +
int main()
 +
{
 +
    Complexe z1(1,1);
 +
    double mod;
 +
    mod=z1.module();
 +
    cout <<"||z1||="<<mod<<endl;
 +
    Complexe z2;
 +
    Complexe z3(-4,5);
 +
    z3.affiche();
 +
    z3.conjugue();
 +
    z3.affiche();
 +
    Complexe zr;
 +
    zr=z3.add(z2);
 +
    return 0;
 +
}
 +
 +
</source>

Version du 18 septembre 2020 à 11:31

TD1 : découverte du C++ et de QT Creator

  • Suivre l’explication sur la création d’un projet C++ avec Qt Creator.
  • Modifier le fichier main.cpp avec le code suivant. Compiler et exécuter le projet.
#include <iostream>

using namespace std;

class Complexe {
    public :
        double re;
        double im;
        void affiche() {
            cout << re << "+" << im << "i" << endl;
        }
};

int main() {
    Complexe z1;
    cout << "coucou" << endl;
    cout << "z1=";
    z1.affiche();
}
  • Quels sont les attributs de la classe Complexe ainsi définie ? Quelles sont ses méthodes ?
  • Ajouter à la classe un constructeur dont voici le squelette :
Complexe (double _re, double _im) {
    // à compléter
}
  • Ajouter à la classe une méthode permettant d’ajouter un nombre complexe :
Complexe add(Complexe z) {
    // à compléter
}

qui permet de retourner un complexe correspondant à l’addition du nombre courant avec un nombrez. Exemple d’utilisation :

Complexe z1(0,1);
Complexe z2(1,0);
Complexe z3 = z1.add(z2);
  • Ajouter des getters et des setters aux attributs.
  • Ajouter des méthodes : produit de deux complexes, conjugué, …
  • Le cas échéant, vous pouvez reprendre le TD de S1 sur les nombres complexes : Cours:TdComplexe


Une correction possible

#include <iostream>
#include <math.h>

using namespace std;

class Complexe
{
public :
    double re;
    double im;

    Complexe(double r, double i)
    {
        re = r;
        im = i;
    }

    Complexe()
    {
        re = 0;
        im = 0;
    }

    Complexe add(Complexe z)
    {
        Complexe res;
        res.setRe(re+z.re);
        res.setIm(im+z.im);
        return res;
    }

    double module()
    {
        double m;
        m = sqrt(re*re+im*im);
        return m;
    }

    void affiche()
    {
        cout << re;
        if (im >=0)
        {
             cout << "+";
        }
        cout << im << ".i"  <<endl;
     }
    void setRe(double r)
    {
        re = r;
    }
    void setIm(double i)
    {
        im = i;
    }
    void conjugue()
    {
        im = -im;
    }


};


int main()
{
    Complexe z1(1,1);
    double mod;
    mod=z1.module();
    cout <<"||z1||="<<mod<<endl;
    Complexe z2;
    Complexe z3(-4,5);
    z3.affiche();
    z3.conjugue();
    z3.affiche();
    Complexe zr;
    zr=z3.add(z2);
    return 0;
}