Problemes de valeur chapitre 2 !!

Signaler
Messages postés
65
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
18 août 2004
-
Messages postés
65
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
18 août 2004
-
Bonjour a tous.
J'ai encore quelques soucis avec des valeures numériques.
Mon application effectue des calculs, qui se passent a merveille tant que les valeurs sont entieres.
Cependant des que l'une d'entre elle devient decimale, j'obtien 0 pour k et a forciori pour l.
Pourtant la varialbe qui prend la valeur est declarée en float.
Si vous voyez d'ou ca peut venir dites moi.

Voila le code en question, enfin les codes puisque cela ce produit pour 2 calculs différent.

Merci.

T.

float y;
float p;
float l;
float lo;
long double k;
float g;
char buf[256];

Premier calcul ou l'erreur se produit

case IDC_ASSUM1:

lo=GetDlgItemInt(hWndlength,EDITLOADING,NULL,TRUE);
y=GetDlgItemInt(hWndlength,EDITYOUNG,NULL,TRUE);
p=GetDlgItemInt(hWndlength,EDITPOISSON,NULL,TRUE);
g=GetDlgItemInt(hWndlength,EDITGIC,NULL,TRUE);

k=(g*1000)*((4*y*1000000)/(3-p));
l=(k*k)/(lo*1000000*lo*1000000*Pi);

sprintf(buf,"%le",k);
SetDlgItemText(hWndlength,EDITLENGTHCRACK,buf);

DialogBoxParam(hInstlength,MAKEINTRESOURCE(IDD_ASSUM1),hWndlength,ChildDlgProc,NULL);

Deuxieme calcul ou l'erreur se produit

lo=GetDlgItemInt(hWndlength,EDITLOADING,NULL,TRUE);
y=GetDlgItemInt(hWndlength,EDITYOUNG,NULL,TRUE);
p=GetDlgItemInt(hWndlength,EDITPOISSON,NULL,TRUE);
g=GetDlgItemInt(hWndlength,EDITGIC,NULL,TRUE);

k=g*1000/((3-p)/(4*y*1000000));
l=(k*k)/(1.4884*lo*1000000*lo*1000000*Pi);

sprintf(buf,"%le",l);
SetDlgItemText(hWndlength,EDITLENGTHCRACK,buf);

DialogBoxParam(hInstlength,MAKEINTRESOURCE(IDD_ASSUM3),hWndlength,ChildDlgProc,NULL);



J'ai aussi un probleme avec le lancement des dialogBox IDD_ASSUM1 et IDD_ASSUM3. Dans l'editeur de ressources, elles contiennent une zone image avec un bitmap qui s'affiche, mais quand je demande l'affichage sur clique d'un boutton radio, la DialogBox se lance mais l'image n'apparait pas.

En vous remerciant pour votre aide.

T.

6 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Pour commencef vire tout ces float.
Pas assez de précisions, et utilise que des doubles.

Ensuite dans sprintf, format tes doubles et mais lf a a place de le, ce qui donne :
double ....;
double ....;
....
sprintf(buf,"%0.2lf",k);
...


Ainsi tu as formatter ton nombre avec deux décimales.

Shell
Messages postés
65
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
18 août 2004

ca y est j'ai fait ce que tu dis, effectivement c'est plus clair a lire.
Cependant j'ai toujours le probleme d'avoir 0 des que je rentre une valeur décimale a g et a y.
J'ai testé avec toutes les valeurs cela fonctionne parfaitement avec une seule, p.
Toutes les autres conduisent a un resultat nul.

T.
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
GetDlgItemInt retourne des valeurs entieres!
Toi tu veux des doubles!
Donc meme si tu entres des decimales dans tes EditBox, ils vont etre tronqués et 0.1 donnera 0 par exemple.

Utilise GetWindowText et ensuite pour convertir sert toi de atof.

Shell
Messages postés
65
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
18 août 2004

Nikel Shell ca fonctionne a merveille.

Reste ce probleme de non affichage d'image dans les dialogbox.
La syntaxe d'appel n'est pas fausse puisque les DialogBox apparaissent, mai je peux me tromper , apres tout je sus débutant....

J'aii chercher dans des bouquind pour une cause de ce probleme mais je n'ai rien trouvé....a part que cela est du a un probleme de "linking".

Mais ca m'avance pas trop. Si tu comprend mieux que moi.

Timo
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Probleme d'affichage d'image dans les dialogbox ?
Tu veux faire quoi exactement ?

Shell
Messages postés
65
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
18 août 2004

En fait j'ai crée 3 bouton radio et 3 dialogBox.
Leds dialog box contiennent chacune une zone image contenant un Bitmap different.
On a donc 3 dialogbox contenant 3 image differentes.
JE voudrais que sur le clik des radio buttons la dialogbox avec l'image qui convient d'affiche.
L'affichage de la dialog box fonctionne parfaitement, cependant lorsqu'elle est lancée elle ne contient pas l'image qu'elle devrait contenir....juste un fonc gris.

Voila. J'espere que tu as mieux compris.
T.