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; }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...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.
Lors de l'appel de la fonction si je met
au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ResultatFonction(Op,&Liste ,Min,Max,Densite)
Le probleme disparait (enfin peut etre qu'une autre variable est touche).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ResultatFonction(Op,&Liste ,Max,Min,Densite)
Au debut de mon programme je define les trois variables.
Lorsque j'interverti Densite et Max :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 double Max=10; double Min=-10; double Densite=50;
c'est Densite qui change.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 double Densite=50; double Max=10; double Min=-10;
Alors juste pour tester j'ai cree un variable qui n'est utilise null part et je l'initialise à 100
Et maintenant c'est Salut qui change.
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;
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
Mais franchement c'est moche. En plus je devrais l'expliquer a mes profs alors.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ResultatFonction(Op,&Liste ,Max*zoom,Min*zoom,Densite*IncDensite)
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.
Partager