Rechercher : dans
Par :

Boucle infini

Dernière réponse le 11 déc 2008 à 13:04:35 c1117, le 11 déc 2008 à 12:03:49 
 Signaler ce message aux modérateurs

Bonjour,
je comprends pas pourquoi sa fait une boucle infini et vous?

int main () {

double r=0.0
for (double i = 0 ; i !=1.0 ; i+=0.1 ) {
r = r+i;
}

return 0;
}

Configuration: Linux
Firefox 3.0.3

1

fiddy, le 11 déc 2008 à 12:12:49

Salut,
C'est normal, en fait la comparaison entre double ou float est délicate car approximée par des binaires en mémoire.
En fait en C, deux doubles sont égaux si leur différence est très faible (0.0001 par exemple).
Dans ton cas, tu peux faire encore plus simple, en mettant i<=1.0 à la place de i!=1.0 dans ta boucle for.
Cdlt
Google is your friend

Répondre à fiddy

2

ljm972, le 11 déc 2008 à 12:14:50

ça l'air drôle , ça doit être l'erreur sur la mesure
à la place != met < ou <= , enfin tu comprend

Répondre à ljm972

3

lermite222, le 11 déc 2008 à 12:15:29

Bonjour,
Mon C est loin, mais ça serait pas plutôt..
i=i+0,1
A+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

4

fiddy, le 11 déc 2008 à 12:17:05

I+=0.1 signifie i=i+0.1...
Google is your friend

Répondre à fiddy

5

lermite222, le 11 déc 2008 à 12:25:23

Hum.. oui, comme j'ai dit, c'est loin tout ça.
A+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)

Répondre à lermite222

6

 c1117, le 11 déc 2008 à 13:04:35

Merci pour la reponse ;-)

Répondre à c1117
Collection CommentÇaMarche.net