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 1
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
Rejoignez-nous