Cours:TdComplexe : Différence entre versions
(Page créée avec « =={{Bleu|Td 9}} Travail sur les complexes en C++ avec eclipse== On cherche à écrire un programme permettant le calul arithmétique de base sur les... ») |
m |
||
| (5 révisions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
| − | ==[[Cours:tdComplexe| | + | ==[[Cours:tdComplexe|Travail sur les complexes en C++]]== |
| − | On cherche à écrire un programme permettant le | + | 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''. | ||
| + | |||
| + | <source lang=cpp> | ||
| + | struct Complexe { | ||
| + | double pr; | ||
| + | double pi; | ||
| + | }; | ||
| + | |||
| + | struct Complexe z1, z2, r; | ||
| + | |||
| + | int main() | ||
| + | { | ||
| + | |||
| + | return 0; | ||
| + | } | ||
| + | </source> | ||
| + | |||
| + | 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: | ||
| + | |||
| + | <source lang=cpp> | ||
| + | ... | ||
| + | z1.pr=3; | ||
| + | z1.pi=4; | ||
| + | ... | ||
| + | </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=== | ||
| + | |||
| + | |||
| + | 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. | ||
Version actuelle datée du 6 décembre 2021 à 08:11
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;
};
struct Complexe z1, z2, r;
int main()
{
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.