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 :

deux Boucles while


Sujet :

C

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Par défaut deux Boucles while
    Bonjour,

    J'ai deux boucles (while) une à l’intérieur de l'autre, j'aimerais que pour toute valeur prise de la première condition que le code fait balayer toutes les possibilités de la deuxième condition (boucle), donc parcourir toutes les valeurs de la deuxième boucle avant de passer à la deuxième valeur de la première, ma question est un peu ambiguë !! J'essaye d'expliquer d'avantage.

    Par exemple :
    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
     
    x=1;
    y=1;
    while (x<val1)
    {
    while (y<val2)
    {
     
    CALCUL A REALISER
     
    y=y+1;
    }
     
    if (Condition)
     
    {
    break;
    }
     
    x=x+1;
     
    }
    Le problème dans l'exemple, c'est que x s'incrémente à chaque fois qu'on sort de la boucle de y, alors que j'aimerais qu avec chaque valeur de x , on fait balayer toutes les valeur de y pour faire le calcul et puis on passe à la deuxième valeur de x.
    J'espère que ma question est plus au moins claire!!
    Merci

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Mais justement, c'est précisément ce qui est fait.

    Cela dit, utilise plutot des boucles for.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int x=1;
    while (x<bidule) {
        //du code
        ++x;
    }
    est équivalent à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int x=1; x<bidule; ++x) {
        //du code
    }
    à une différence près, x n'est pas définie en dehors de la boucle, mais c'est généralement ce qu'on veut.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Par défaut
    Bonjour,

    Je ne comprends pas trop ton problème ... ton implémentation correspond à ce que tu veux faire ...
    A un point près : tu ne réinitialises pas y avant le while (y < val2).

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    En effet, j'aurai du nettoyer mes yeux un peu mieux.

    Ton erreur aurait été plus évidente avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (x=1; x<val1; ++x) {
        for (y=1; y<val2; ++y) {
            //CALCUL A RÉALISER
        }
     
        if (Condition) {
            break;
        }
    }

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Par défaut
    En effet, avec des boucles while ou for, je n'arrive pas à mon but: car le code prend pour la première incrémentation x=1 et y=1; pour la deuxième x=2, y=2 et ainsi de suite...
    par contre, moi j'aimerais qu'avec la valeur x=1, le calcul soit fait avec toutes les valeurs de y, y=1....y=valfinale
    et puis pour x=2 ... on fait le calcul avec toute les valeurs y=1 2 3...
    a chaque fois le calcul est réaliser et on s’arrête qu'on la condition est vérifiée.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Par défaut
    Le "y = 1" me semble mal placé.

  7. #7
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Par défaut
    Citation Envoyé par zaynabing Voir le message
    En effet, avec des boucles while ou for, je n'arrive pas à mon but: car le code prend pour la première incrémentation x=1 et y=1; pour la deuxième x=2, y=2 et ainsi de suite...
    As-tu lu les réponses de leternel, CodeurPlusPlus ou moi-même ?
    Lorsque tu dis "le code prend pour la première incrémentation [...]" à quel endroit fais-tu ce test ?

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Je reformule ce qui a été dit précédemment :
    A la fin de ta "première" boucle, après l'appel de la seconde boucle, il faut remettre x à sa valeur initiale. Si tu utilises 2 whiles imbriqués, il faut le faire à la main, et si tu utilises 2 for, ça sera fait tout seul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    x = 0;
    y = 0;
    while (x < val_1)
    {
      while (y < val_2)
      {
         // calcul
         y++;
      }
      x++;
      y = 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (x = 0 ; x < val_1 ; x++)
    {
      for (y = 0 ; y < val_2 ; y++)
      {
        //calcul
      }
    }
    Tu noteras :
    • Que tout ceci t'a déjà été dit (je n'ai fait que reformuler)
    • Que l'utilisation de boucles for est plus clair que l'utilisation de boucles while
    • Que j'ai initialise les variables à 0, car c'est généralement ce qu'on fait, surtout lorsqu'on manipule des tableaux (dont les indices vont de 0 à N-1 pour N éléments)
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. Deux boucles while
    Par SISGI dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/06/2013, 11h27
  2. [PHP 5.3] Parcourir deux array à la manière de deux boucle while
    Par jflorence dans le forum Langage
    Réponses: 8
    Dernier message: 23/03/2010, 18h35
  3. Arrêter deux boucles while
    Par ABN84 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 30/04/2009, 11h51
  4. optimisation d'une requête+deux curseurs+deux boucles while
    Par jawadi95 dans le forum Développement
    Réponses: 1
    Dernier message: 10/07/2008, 11h59
  5. [MySQL] gestion d'affichage entre deux boucle while mysql_fetch_array()
    Par tkwleboss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/11/2007, 22h37

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