User Tools

Site Tools


in204:tds:sujets:td5:part1

This is an old revision of the document!


Partie I – Surcharge d’opérateurs

TD5

Question n°1

Créer un projet dans lequel vous définissez une classe de nombre complexe qui aura typiquement la structure suivante :

#ifndef complexHPP
#define complexHPP
 
class Complex
{
private:
	double mRealPart;
	double mImaginaryPart;
public:
	Complex();
	~Complex();
...
};
 
#endif

Question n°1.1

Ajouter à cette classe un ou plusieurs opérateurs de conversion convertissant un nombre flottant en un nombre complexe.

Correction

Correction

Question n°1.2

Ajouter à cette classe une fonction qui affiche le nombre complexe sur la console.

Correction

Correction

Question n°1.3

Créer deux fonctions statiques créant des nombre complexes, l’une créant un nombre complexe à partir d’une paire correspondant à la partie réelle et imaginaire, l’autre créant un nombre complexe à partir de la paire (ρ,θ) correspondant à la notation polaire de ce nombre.

Correction

Correction

Question n°1.4

Créer une variable globale ayant comme type la classe complexe et ayant pour valeur la valeur imaginaire 1.

Correction

Correction

Question n°1.5

Tester le bon comportement de votre classe sur des exemples simples. Notamment, est-il possible d’écrire désormais :

    Complex complexValue = 3.3 + 5 * I;

Correction

Correction

Question n°2

Nous considérons les opérations de base simple que sont l’addition et la soustraction.

Question n°2.1

Proposer une surcharge des opérations + et –. Implanter ces dernières et tester.

	Complex operator + (const Complex& aRightValue) const;
	Complex operator - (const Complex& aRightValue) const;

Correction

Correction

Question n°2.2

Proposer une surcharge des opérations + et –. Implanter ces dernières et tester.

	Complex operator + (double aLeftValue, const Complex& aRightValue);
	Complex operator – (double a aLeftValue, const Complex& aRightValue);

Expliquer la différence avec les opérations précédentes ?

Correction

Correction

Question n°2.3

Tester le bon comportement de votre classe sur des exemples simples. Notamment, est-il possible d’écrire désormais :

	Complex complexValue = 3.3 + 5 * I;

Correction

Correction

Question n°2.4

Proposer une surcharge des opérations += et –=. Implanter ces dernières et tester.

	Complex& operator += (const Complex& aRightValue);
	Complex& operator -= (const Complex& aRightValue);

Expliquer pourquoi les signatures des operations += et -= sont différentes de celles des operations + et - ?

Question n°3

Nous considérons les opérations de base que sont la multiplication et la division.

Question n°3.1

Proposer deux fonctions de conversion entre la représentation polaire et la représentation canonique des nombres complexes et implanter les.

Question n°3.2

Proposer une surcharge des opérations * et /. Implanter ces dernières et tester.

	Complex operator * (const Complex& aRightValue) const;
	Complex operator / (const Complex& aRightValue) const;

Correction

Correction

Question n°3.3 (optionnel)

Proposer une surcharge des opérations + et –. Implanter ces dernières et tester.

    Complex& operator *= (const Complex& aRightValue);
    Complex& operator /= (const Complex& aRightValue);
in204/tds/sujets/td5/part1.1602657835.txt.gz · Last modified: 2020/10/14 06:43 by bmonsuez