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 :

Problème while et boucle


Sujet :

C++

  1. #1
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut Problème while et boucle
    "Code prêt à coller dans un compilateur C++""


    Je ne comprend pas pourquoi le while n'est pas respecté, je devrais sortir au bout du troisième passage.


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include   <cstring> 
    #include <iostream>
    #include   <cstdlib> 
    #include <string> 
    using namespace std;
     
    int main()
    { 
         string mot;
         int ii; 
         int a;
         int b;
         int c;
     
         a =0;
         b =0;
         c =0;
     
         int taille;
     
         string chaine;
         chaine = "abc";
     
         taille = chaine.length();
     
         string t1[taille];
         string t2[taille];
         string t3[taille];
     
     
             for (ii=0; ii<taille; ii++)
     
          {
                    t1[ii] = chaine.substr(ii,1);
                    t2[ii] = chaine.substr(ii,1);
                    t3[ii] = chaine.substr(ii,1);
     
                                                              }
     
           while (b<taille)
     
              {
     
                for (a =0; a < taille; a++ )  
     
                 {
                          cout<<t1[c] <<t2[b]<<t3[a]<<endl;
     
     
                             if (a == taille) 
     
                             {
                                    a = 0;
                                    b++;
                                    break;  
                                                  }
     
     
                                                           }
     
     
                                                                   }
     
     
     system("PAUSE");
        return EXIT_SUCCESS;
     
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    J'ai rajouté quelques commentaires...

    Citation Envoyé par Gilles57-H-G Voir le message
    "Code prêt à coller dans un compilateur C++""


    Je ne comprend pas pourquoi le while n'est pas respecté, je devrais sortir au bout du troisième passage.


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include   <cstring> 
    #include <iostream>
    #include   <cstdlib> 
    #include <string> 
    using namespace std;
     
    int main()
    { 
         string mot;
         int ii; 
         int a;
         int b;
         int c;
     
         a =0;
         b =0;
         c =0;
     
         int taille;
     
         string chaine;
         chaine = "abc";
     
         taille = chaine.length();
     
         string t1[taille];
         string t2[taille];
         string t3[taille];
     
         for (ii=0; ii<taille; ii++)
         {
              t1[ii] = chaine.substr(ii,1);
              t2[ii] = chaine.substr(ii,1);
              t3[ii] = chaine.substr(ii,1);
         }
     
         while (b<taille)
         {
              for (a =0; a < taille; a++ )  
              {
                   cout<<t1[c] <<t2[b]<<t3[a]<<endl;
     
                   if (a == taille) // pourquoi ??? Suprimer tout ça. 
                   {
                        a = 0; // a redeviendra égal à 0 lorsqu'on entrera de nouveau dans la boucle for
                        b++; // NE PAS SUPPRIMER, mais le sortir ça de la boucle for
                        break;  // ...
                   }
              }
         }
     
         system("PAUSE");
         return EXIT_SUCCESS;
    }
    Je transforme ta boucle whiel en quelque chose de lisible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while (b < taille)
    {
       for (a = 0; a<taille; ++a)
       {
          cout<<t1[c] <<t2[b]<<t3[a]<<endl;
       }
       ++b;
    }
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  3. #3
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Cet algo fonctionne justement en remettant à 0 la première variable.

    La boucle for doit constamment tourner.

    C'est le while qui dit fonctionner

    Regarde mon message (dernier)

    Cela fonctionne trés bien en VB

    http://www.developpez.net/forums/d10...encer-travail/

    J'ai supprimé la remise à 0 de a, et j'ai aussi supprimé le break , rien ne change.
    Avec le break sans la remise à 0 idem.

  4. #4
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    Bonjour,
    Ce qui "casse" ton code c'est le "break;", un "continue;" reviendras au début de la boucle for.
    Mais bon c'est deux mot clé là..... no comment
    Homer J. Simpson


  5. #5
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    continue ne fonctionne pas, le while n'est toujours pas respecté.

    il faudrait faire peut être un DO WHILE.

  6. #6
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Merci Emanuel cela fonctionne:

    Voila sur trois caractères:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include   <cstring> 
    #include <iostream>
    #include   <cstdlib> 
    #include <string> 
    using namespace std;
     
    int main()
    { 
         string mot;
         int ii; 
         int a;
         int b;
         int c;
     
         a =0;
         b =0;
         c =0;
     
         int taille;
     
         string chaine;
         chaine = "abc";
     
         taille = chaine.length();
     
         string t1[taille];
         string t2[taille];
         string t3[taille];
     
     
             for (ii=0; ii<taille; ii++)
     
          {
                    t1[ii] = chaine.substr(ii,1);
                    t2[ii] = chaine.substr(ii,1);
                    t3[ii] = chaine.substr(ii,1);
     
     
                                                             }
     
     
     
           while (c<taille)
     
              {
     
                for (a =0; a < taille; a++ )  
     
                 { cout<<t1[c] <<t2[b]<<t3[a]<<endl;  }
     
     
     
                                   b++;
     
     
                         if (b == taille) 
                   {
                        b= 0; 
                        c++; 
                                       }
     
     
     
     
     
                                                              }
     
     system("PAUSE");
        return EXIT_SUCCESS;
     
    }

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

Discussions similaires

  1. problème command avec boucle while
    Par Makssime dans le forum Tkinter
    Réponses: 2
    Dernier message: 29/11/2010, 17h45
  2. Problème avec deux boucles do whiles imbriquées
    Par breizh297 dans le forum Fortran
    Réponses: 1
    Dernier message: 15/11/2010, 08h37
  3. [AC-2003] Problème avec ma boucle Do While
    Par maw59 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/03/2010, 11h21
  4. [AC-2007] Probléme avec une boucle DO While
    Par theBinette dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/02/2010, 17h10
  5. Problème creation procedure & boucle while
    Par totor_22 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 01/12/2009, 10h24

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