Cours:TdComplexe : Différence entre versions
| Ligne 1 : | Ligne 1 : | ||
| − | ==[[Cours:tdComplexe| | + | ==[[Cours:tdComplexe|Travail sur les complexes en C++]]== |
On cherche à écrire un programme permettant le calcul arithmétique de base sur les nombres complexes | On cherche à écrire un programme permettant le calcul arithmétique de base sur les nombres complexes | ||
| Ligne 34 : | Ligne 34 : | ||
<source lang=cpp> | <source lang=cpp> | ||
| + | ... | ||
z1.pr=3; | z1.pr=3; | ||
z1.pi=4; | z1.pi=4; | ||
| + | ... | ||
</source> | </source> | ||
| + | |||
| + | On peut bien évidemment faire un calcul en utilisant les champs de la structure : | ||
| + | <source lang=cpp> | ||
| + | ... | ||
| + | // ex d'une rotation de ??? | ||
| + | z2.pr=-z1.pi; | ||
| + | z2.pi=z1.pr; | ||
| + | ... | ||
| + | </source> | ||
| + | |||
=== Exercice=== | === Exercice=== | ||
Version du 16 novembre 2020 à 10:43
Travail sur les complexes en C++
On cherche à écrire un programme permettant le calcul arithmétique de base sur les nombres complexes
Or, on ne peut stocker un complexe dans une variable car il n’existe pas en langage C de type complexe. En définissant une structure représentant les complexes, on peut alors créer un "nouveau" type de variable pour y stocker des complexes.
Utilisons, par exemple, la représentation cartésienne d’un complexe: partie réelle et partie imaginaire. Le code suivant décrit la structure complexe et déclare trois variables: z1, z2, et r.
struct Complexe {
double pr;
double pi;
};
int main()
{
struct Complexe z1, z2, r;
return 0;
}
Cette structure est donc constituée de deux champs: le champs pr (resp. pi), de type double et qui peut contenir la partie réelle (resp. partie imaginaire) d’un nombre complexe.
L’utilisation de cette structure est simple: si l’on veut stocker 3+4i dans z1, il suffit d’écrire:
...
z1.pr=3;
z1.pi=4;
...
On peut bien évidemment faire un calcul en utilisant les champs de la structure :
...
// ex d'une rotation de ???
z2.pr=-z1.pi;
z2.pi=z1.pr;
...
Exercice
Ecrire le gestionnaire de menu permettant d’afficher et de gérer l’écran suivant:
A R I T H M E T I Q U E C O M P L E X E
-------------------------------------------
1 ... Entrée du 1er nb complexe 2 ... Entrée du 2ième nb complexe
A ... Affichage du résultat + ... Somme
- ... Soustraction * ... Multiplication
C ... Carré U ... Cube
Ce gestionnaire de menu aiguillera le traitement suivant le choix désiré de la façon représentée sur le tableau suivant.
Choix Fonction appelée Rôle
------- ------------------ ----------------------------------
1 entree1() entre un complexe dans z1
2 entree2() entre un complexe dans z2
A affichage() affiche r
+ somme() calcule z1+z2, range dans r
- diff() calcule z1-z2, range dans r
* mult() calcule z1*z2, range dans r
C carre() calcule z1*z1, range dans r
U cube() calcule z1 au cube, range dans r
On notera que pour simplifier, on déclarera z1, z2, et r en variables globales ( cad connues par toutes les fonctions). Ecrire les différentes fonctions référencées dans le tableau ci-dessus.