Bonjour,
Alors voila j'ai un gros probleme.
Je travail sur un mini-Projet en C. Je dois faire une calculatrice.
Bon j'ai termine tout le code de la calculatrice. Et la je travail sur le dessin d'une courbe de dessin. Pour cela j'utilise 3 variable Max,Min,Densite.
Pour le moment je n'ai ecrit aucune fonction qui modifie ces valeurs.
Pourtant la valeur de Max change. J'ai un peu trace le code et il semblerait que la modification se fait au niveau de cette fonction :
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
 
int ResultatFonction(char * Op,DPoint **  Liste ,double Max,double Min,int n)
	{
	double x=0;
	double r=0;
	double pas = 1;//(Max-Min)/n;
	int err=0; 
	int c=0; //Compte le nombre de points valide
	Vider(Liste);
	x=Min;
	while(x<=Max)
		{
		Val_Constantes[4]=x;
		err=CalculerOperation(Op,&r);
		if (err == ERR_SUCCES)
			{
			Push(Liste,x,r);
			c++;
			}
		x+=pas;
		}
	if (c==0) return ERR_NEPEUTDESSINER; // Si nous n'avons aucun point valide alors on la fonction ne peut etre dessiner avec ses parametres
	return ERR_SUCCES;
	}
Liste : c'est une liste chainee. j'ai utilise un code que j'ai trouver sur Devellopez.com
CalculerOperation : Calcul une formule mathematique du style 5+10log(4)...
Val_Constantes[4]=x; : La constante "x" est predefini et remplacé dans la CalculerOperation par Val_Constantes[4]. donc si Val_Constantes[4]=4 et qu'on a 5+x. CalculerOperation renvoi 9.
En fait Max prend la valeur de r dans la derniere iteration. (Si je prend comme fonction f(x)=0 Max = 0, f(x)=2x Max = 2*Max...
Lors de l'appel de la fonction si je met
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ResultatFonction(Op,&Liste ,Min,Max,Densite)
au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ResultatFonction(Op,&Liste ,Max,Min,Densite)
Le probleme disparait (enfin peut etre qu'une autre variable est touche).

Au debut de mon programme je define les trois variables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
double Max=10;
double Min=-10;
double Densite=50;
Lorsque j'interverti Densite et Max :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
double Densite=50;
double Max=10;
double Min=-10;
c'est Densite qui change.
Alors juste pour tester j'ai cree un variable qui n'est utilise null part et je l'initialise à 100
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
double Salut=100;
double Densite=50;
double Max=10;
double Min=-10;
Et maintenant c'est Salut qui change.

Si je declare ces variables comme constante, plus de probleme. Seulement je dois les modifer. Au pire je pense les declarer const et ajouter des variable zoom et incDensite. et faire un truc du style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ResultatFonction(Op,&Liste ,Max*zoom,Min*zoom,Densite*IncDensite)
Mais franchement c'est moche. En plus je devrais l'expliquer a mes profs alors.

Je pense que ca doit etre un probleme de chevauchement de variables en memoire mais je ne sais pas trop comment y remedier.
Ps: Mon projet est en C, si vous pouviez me donner que des solutions C et non C++. (Quoique meme en compilant en tant que c++ le probleme reste le meme)

Je travail sous VisualC++(Avec Visual Studio 2005) et je n'utilise que les bibliotheques AINSI et WIN32(Pour l'interface).
Merci pour votre aide.