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) { }
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Moi ma variable c'est X et elle varie de 0 a Xlim de 0,2 en 0,2 donc ça donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for (X=0.f;X<Xlim.f;X+=0.2f) { }Ça marche pas !
Ca veut dire quoi "ça marche pas" ? Le code que tu donnes fait exactement ce que tu décris.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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 ....
![]()
![]()
![]()
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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).
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Ça marche nickel avec les compteurs entiers![]()
Merci beaucoup pour votre aide![]()
Partager