Probleme avec float....

dletozeun
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
- 19 juin 2004 à 20:25
HCJarod
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
- 20 juin 2004 à 12:04
bonjour,

J'ai un probleme dans ce code:

les parametres de la fonction MyLine() :

xdep=0; ydep=0;
xfin=300; yfin=200;

normalement :

(yfin-ydep)/(xfin-xdep)=0.75

Or dans le programme la variable "a" de type float qui prend la valeur de ce calcul est egale a 0!!!

Je ne vois vraiment pas pourquoi!

void MyLine(int xdep, int ydep, int xfin, int yfin)
{
unsigned int dy;
unsigned int dx;
if(ydep>=yfin)
dy=ydep-yfin;
else
dy=yfin-ydep;

if(xdep>=xfin)
dx=xdep-xfin;
else
dx=xfin-xdep;

if(dy<=dx)
{
float a=0;

a=((yfin-ydep)/(xfin-xdep));//le probleme est ici!!! a est egale a 0 au lieu de 0.75

sprintf(str,"%d %d %d %d",xdep,ydep,xfin,yfin);
for(int x=xdep;x<=xfin;x++)
{
putpixel(buffer,x+512,(x*a)+384,makecol(255,255,255));
}
}
else
{
float a;

a=((xfin-xdep)/(yfin-ydep));

sprintf(str,"%d %d %d %d",xdep,ydep,xfin,yfin);
for(int y=ydep;y<=yfin;y++)
{
putpixel(buffer,(y*a)+512,y+384,makecol(255,255,255));
}
}

}

Merci !

4 réponses

cs_AlexMAN
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
19 juin 2004 à 20:57
Les variables ke tu utilises pour ton calcul sont de type int donc le resultat sera calculé ds le type int puis converti en float, le resultat intermediaire ne pouvant stocker la partie decimal, zero converti en float donnera ZERO !!

Voila, change le type de ces variables...

++

Alhexman
0
ymca2003
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
7
19 juin 2004 à 22:40
a=((float)(yfin-ydep))/(xfin-xdep);

devrait faire l'affaire (un des opérandes doit être convertit en float)
0
dletozeun
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
19 juin 2004 à 22:54
aaahhh okaayy je savais pas ca !!!
Merci pour vos conseils! Ca fonctionne impec!
0
HCJarod
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
20 juin 2004 à 12:04
pour info si tu multiplie par 1.0 ca doit marcher comme te l'a expliquer AlexMAN

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
0