Bonjour,
je voulais savoir si l'incrémentation dans une boucle for ne se faisait que par un entier et si non, comment le faire par un réel ?
Merci de votre aide
Bonjour,
je voulais savoir si l'incrémentation dans une boucle for ne se faisait que par un entier et si non, comment le faire par un réel ?
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (float f = 0.f; f < 1.f; f += 0.01f) { }
Moi ma variable c'est X et elle varie de 0 a Xlim de 0,2 en 0,2 donc ça donne :
Ça marche pas !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for (X=0.f;X<Xlim.f;X+=0.2f) { }
Ca veut dire quoi "ça marche pas" ? Le code que tu donnes fait exactement ce que tu décris.
Ben genre si je fais ça
Ça ma sort pas X=0,X=0,2;etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { float Xlim=5; float X; for (X=0.f;X<Xlim.f;X+=0.2f) printf("X=%f",X); system("pause"); }
Ton problème vient de la ligne :
Remplace par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part for (X=0.f;X<Xlim.f;X+=0.2f)
Le lettre f ne se met que derrière un littéral pour lui donner un type autre que celui par défaut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part for (X=0.f;X<Xlim;X+=0.2f)
Ouki ça marche merci ^^
Attention, a cause des problemes de representabilite dans les flottants (0.2 n'est pas representable exactement dans les formats de flottants habituels) tu peux ne pas avoir ce que tu veux.
n'a pas ce probleme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (int i = 0; i < lim; ++i) { X = i * 0.2; ... }
Mais alors si je fais ça
Pourquoi ça ne m'imprime pas les valeurs demandées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { float theta2,theta1,X; float Xlim=5; for (theta2=0;theta2<70;theta2=theta2+1) { for (theta1=0;theta1<90;theta1=theta1+1) { for (X=0.f;X<Xlim;X+=0.2f) { if (theta1==10&&theta2==50&&X==0.4) { printf("theta1=%d\n",theta1); printf("theta2=%d\n",theta2); printf("X=%d\n",X); } } } } system("pause"); }
Je m'arrache les cheveux ....
Je suis allée voir dans la FAQ.
Le probleme c'est que dans mon cas je n'autorise aucune erreur epsilon sinon ma boucle ne fonctionne pas ...
Tu peux aussi utiliser la méthode de Jean-Marc (utiliser des compteurs entiers).
Ça marche nickel avec les compteurs entiers
Merci beaucoup pour votre aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager