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 :king:
Version imprimable
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 :king:
Code:
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 :
:arf: Ça marche pas !Code:
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:
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: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: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:
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éesCode:
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 ....
:arf: :marteau: :mur:
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 :yaisse2:
Merci beaucoup pour votre aide :king: