IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Incrementation dans une boucle for : forcement un entier ?


Sujet :

C++

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut Incrementation dans une boucle for : forcement un entier ?
    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

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    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)
    {
     
    }

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut
    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 !

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ca veut dire quoi "ça marche pas" ? Le code que tu donnes fait exactement ce que tu décris.

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut
    Ben genre si je fais ça

    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");       
     
    }
    Ça ma sort pas X=0,X=0,2;etc...

  6. #6
    Membre éclairé Avatar de gelam
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Par défaut
    Ton problème vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (X=0.f;X<Xlim.f;X+=0.2f)
    Remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (X=0.f;X<Xlim;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.

  7. #7
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut
    Ouki ça marche merci ^^

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    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.

    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;
      ...
    }
    n'a pas ce probleme.

  9. #9
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut
    Mais alors si je fais ça

    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");       
     
    }
    Pourquoi ça ne m'imprime pas les valeurs demandées
    Je m'arrache les cheveux ....

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651

  11. #11
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut
    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 ...

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu peux aussi utiliser la méthode de Jean-Marc (utiliser des compteurs entiers).

  13. #13
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut
    Ça marche nickel avec les compteurs entiers
    Merci beaucoup pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. incrementation de 2 dans une boucle for
    Par scorpion.os dans le forum Flash
    Réponses: 4
    Dernier message: 26/01/2007, 17h09
  2. Shell - Erreur dans une boucle for
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 11/01/2006, 14h45
  3. Problème avec une DLL dans une boucle For
    Par BraDim dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2005, 13h22
  4. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 21h05
  5. Réponses: 3
    Dernier message: 06/07/2004, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo