bonsoir
afin de manipuler des nombre complexe pour tracer la fonction cosinus j'ai cree une structure complexe avec des fonction qui manipule ces structure comme suit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
#include<stdio.h>
#include<math.h>
#include<malloc.h>
#include<conio.h>
#define infini 10000000000000000000
#define epsilon 0.0000000000000000001
typedef struct complexe{long double re,img;} complexe;
long double *module(complexe *);
complexe *add_complexe(complexe *,complexe *);
complexe *div_complexe(complexe *,complexe *);
int main(int argc,char *argv[])
{
	complexe u[1]={1,0},*z1,*z2,*z3,Z[4]={{5000,0},{5000,0},{epsilon,0},{epsilon,0}};
	long double *f;
    z1=div_complexe(add_complexe(Z,Z+1),Z+3);
	z2=div_complexe(add_complexe(Z,Z+1),Z+4);
	z3=add_complexe(z1,z2);
	z1=add_complexe(z3,u);
	f=module(z1);
	printf("%f \n %f \n %f\n",z1->re,z1->img,1/(*f));
	printf("%f",sqrt(pow(((4/epsilon)+1),2)));
	getch();
}
long double *module(complexe *z)
{
	long double *result=(long double *)malloc(sizeof(long double));
	*result=sqrt(pow(z->re,2)+pow(z->img,2));
	return result;
}
complexe *add_complexe(complexe *z1,complexe *z2)
{
	complexe *result=(complexe *)malloc(sizeof(complexe));
	result->re=z1->re+z2->re;
	result->img=z1->img+z2->img;
	return result;
}
complexe *div_complexe(complexe *z1,complexe *z2)
{
	complexe *result=(complexe *)malloc(sizeof(complexe));
	result->re=((z1->re)*(z2->re)+(z1->img*z2->img))/pow((*module(z2)),2);
	result->img=((z1->img)*(z2->re)-(z2->img*z1->re))/pow((*module(z2)),2);
	return result;
}
et quand j'essaie les resultat des ces fonctions ca marchre tres bien
cepandant quand je passe au chose serieux dans l'interface graphique ;j'evalue le module d'un nombre complexe et j'essaie de tracer la fonction sinus dont l'amplitude est le resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
int main(int argc,char *argv[])
{   static SDL_Surface ecran1;
	float R=5,L=5,C=5,W=0.01,As=0.8,phis;
	long double *f,r=0.5;
            complexe u[1]={1,0},*z1,*z2,*z3;
......
z1=div_complexe(add_complexe(Z,Z+1),Z+3);
    	z2=div_complexe(add_complexe(Z,Z+1),Z+4);
	    z3=add_complexe(z1,z2);
	    z1=add_complexe(z3,u);
		f=module(z1); 
          r=*f;
trace_graph(W,r,0);
....
ca marche pas

quand je passe le deuxieme parametre de la fonction "trace_graph" comme valeur(ex: 0.5) ca marche bien mais des que j'essaie d'employer les resultats complexe ca coine
merci pour votre aide