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 :

probleme de boucle


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 24
    Par défaut probleme de boucle
    Bonjour,

    J ai un probleme avec une if imbriqué ds une boucle for, si le test est vrai j aimerai afficher le message BRAVO qu une seule fois. comment dois je m y prendre ?

    Merci d'avance
    Cordialement,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    for(j=0;j<NBCASESCOTE;j++)
    {
     if(tabPieces[j].Nord==VAL_GRAY)
                            {
     	printf("Bravo tu as finis le jeu");
     			}
    }

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    il y a plein de solution mais la plus simple est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     if(tabPieces[j].Nord==VAL_GRAY)
        {
             printf("Bravo tu as finis le jeu");
             break ;
        }
    l'instruction "break" sort de la boucle (for ou while) ..

    Sinon il faut mettre une variable qui indiquera que tu es passe par la ou non...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 24
    Par défaut
    Avec la boucle for je suppose ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    disons que la maniere la plus lsible et portable serait dans ce cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int OK=1 ;
     
    for ( i = 0 ; i < N ; i++ )
    {
      ...
      if ( condition && OK )
       {
           printf (...);
           OK = 0 ;
       }
    }
    sauf que dans ce cas, si N est tres grand et que ta condition est pour i faible, tu feras N-i (grand) iterations inutiles.....

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 24
    Par défaut
    Merci bcp c'est plus clair comme ça !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 24
    Par défaut
    une deniere chose !

    Est ce que ca verifie bien tous que tout les element du tablo sont = a val_gray ?

    car qd je lance mon programme, ca m ecrit BRAVO si une seule des condition (sur N) est verifié !

    Merci d avance

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ben non...

    Mais ton code ne le faisait pas au depart..

    Si tu veux faire ca, c'est un compteur qu'il te faut...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int count = 0 ;
     
    for ( i = 0 ; i < n ; i++ )
     {
       if ( condition )
         count = count + 1 ;
     }
     
    if ( count == n )
       printf ( "bravo\n");
    else
       printf( "Berkkkk... Rate !!\n");

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 24
    Par défaut
    Mon code m'ecrivait :
    BRAVO Nfois donc il verifiait bien tout les N,
    Mais ds ce que tu m'avais donné, il m ecrivait BRAVO des que une seule condition est vrai T[0].nord==val_gray

    D ou ma question !

    Merci encore c'est sympa

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gotrunkssj Voir le message
    J ai un probleme avec une if imbriqué ds une boucle for, si le test est vrai j aimerai afficher le message BRAVO qu une seule fois. comment dois je m y prendre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    for(j=0;j<NBCASESCOTE;j++)
    {
     if(tabPieces[j].Nord==VAL_GRAY)
                            {
     	printf("Bravo tu as finis le jeu");
     			}
    }
    Déjà, tu pourrais soigner la présentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {
       for (j = 0; j < NBCASESCOTE; j++)
       {
          if (tabPieces[j].Nord == VAL_GRAY)
          {
             printf ("Bravo tu as finis le jeu");
          }
       }
    }
    Ensuite, il suffit de coder exactement ce que tu veux faire. En gros, si on a gagné, on arrête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    {
       int gagne = 0;
     
       for (j = 0; !gagne && j < NBCASESCOTE; j++)
       {
          if (tabPieces[j].Nord == VAL_GRAY)
          {
             printf ("Bravo tu as finis le jeu");
             gagne = 1;
          }
       }
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    {
       int gagne = 0;
     
       for (j = 0; !gagne && j < NBCASESCOTE; j++)
       {
          gagne = tabPieces[j].Nord == VAL_GRAY;
       }
     
       if (gagne)
       {
          printf ("Bravo tu as finis le jeu");
       }
    }
    que j'ai tendance à préférer.

  10. #10
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    bonjour,

    On peut aussi regarder si une valeur est différente.

    ainsi on chercherai le vilain petit canard au lieu de vérifier si ils sont tous gentils

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int a=1;
    for(i=0;i<NBCASESCOTE;i++)
    {
      if(tabPieces[j].Nord!=VAL_GRAY)
      {
            printf ("T'ES NUL");
            a=0;
            break;
       }
    }
    if (i){printf("Bravo tu as finis le jeu");}

Discussions similaires

  1. Probleme de boucle a s arracher les cheuveux
    Par calimero642 dans le forum Langage
    Réponses: 6
    Dernier message: 16/03/2006, 14h44
  2. Probleme de boucle avec des processus sous UNIX
    Par sebastieng dans le forum POSIX
    Réponses: 6
    Dernier message: 15/10/2005, 18h57
  3. [Language]Problème de boucle
    Par marc_dd dans le forum Langage
    Réponses: 11
    Dernier message: 06/10/2005, 14h24
  4. Problem de boucle.....
    Par skad dans le forum C++
    Réponses: 6
    Dernier message: 29/09/2005, 16h28
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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