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 :
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...
Lors de l'appel de la fonction si je met
1 2
|
ResultatFonction(Op,&Liste ,Min,Max,Densite) |
au lieu de
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.
1 2 3 4
|
double Max=10;
double Min=-10;
double Densite=50; |
Lorsque j'interverti Densite et Max :
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
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
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.
Partager