Utilisation des nombres complexes en C
Bonjour,
Je suis tout débutant en programmation, et pour un TP, je dois écrire un programme qui puisse résoudre les équations du second degré à solutions réelles ou complexes. Je n'ai eu aucun problème dans les cas où le discriminant est positif ou nul, puisqu'on utilise que des nombres réels, mais les solutions complexes me posent problème.
En gros l'algorithme que je dois transcrire ressemble à ca:
Code:
1 2 3 4 5
| delta<0
delta= -delta*i
trouver les racines complexes de delta
x1= (-b-sqrt(delta))/(2*a)
x1= (-b+sqrt(delta))/(2*a) |
Mais je ne sais pas comment introduire des nombres complexes dans mon programme, et mes professeurs ne nous ont donné aucun cours là-dessus.
J'ai cru comprendre qu'il fallait inclure la lib <complex.h>, mais je ne sais pas quoi faire ensuite. Le programme va-t-il reconnaitre automatiquement que je parle d'un complexe si je tape quelquechose du genre 4+3*i ?? (ca m'étonnerait beaucoup, mais ca m'arrangerait bien :) )
J'ai aussi vu sur internet que je pourrais utiliser des structures avec quelquechose qui ressemblerait à ca, mais je n'ai pas vu ca en cours, ni même le principe des fonctions (que j'ai vaguement compris seule, mais que je ne maitrise pas bien du tout) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <stdio.h>
struct Complex
{
float r; /*real part*/
float i; /*imag part*/
};
struct Complex C_add (struct Complex a, struct Complex b)
{
struct Complex result;
result.r = a.r + b.r;
result.i = a.i + b.i;
return(result);
}
main()
{
struct Complex z1, z2, z3;
z1.r = 0.0; z1.i = 0.5;
z2.r = 0.0; z2.i = 3;
z3 = C_add (z1, z2);
printf (" la valeur z3 est %f + %f i\n",z3.r, z3.i);
} |
Pourriez-vous m'expliquer comment utiliser de manière simple les complexes afin de pouvoir résoudre mon exercice?
Merci d'avance!