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 :

Revenir au depart while


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2019
    Messages : 23
    Par défaut Revenir au depart while
    bonsoir je suis confronter a un petit soucis j'ai pour énoncer de d'afficher toutes les différentes combinaison de deux nombres entre 00 et 99 dans l'ordre croissant

    exemple :

    $>./a.out | cat -e
    00 01, 00 02, 00 03, 00 04, 00 05, ..., 00 99, 01 02, ..., 97 99, 98 99$>

    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
    #include <unistd.h>
     
    int ft_putchar(char c)
    {
        write(1, &c, 1);
    }
     
     void ft_print_comb2(void)
     {
         int a;
         int b;
         int c;
         int d;
     
         a = 0;
         b = 0;
         c = 0;
         d = 0;
     
         while (a <= 9)
         {
             while(b <= 8)
             {
                 while (c <= 9)
                 { 
                     while (d <= 9)
                     {  
                         ft_putchar(48 + a);
                         ft_putchar(48 + b);
                         ft_putchar(' ');
                         ft_putchar(48 + c);
                         ft_putchar(48 + d);
                         ft_putchar(',');
                         d++;
                     }
                   c++; 
                 }
                b++;
             }
             a++;
         }
     }
     int main ()
     {
         ft_print_comb2();
     }
    et je n'affiche que 00 00,00 01,00 02,00 03,00 04,00 05,00 06,00 07,00 08,00 09,$

    arrivé a ce moment la je suis censé incrémenter ma variable c mais une fois qu'il lit d++ et qu'il sort de l'accolade le prog s'arrête

    Pourriez vous m'aider merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    - variables non initialisées
    - pourquoi ne pas utiliser for ?
    - pourquoi ne pas utiliser printf avec le format %02d ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2019
    Messages : 23
    Par défaut
    Voila je les est initialiser

    Pour la reste c'est la consigne je peut pas autrement

    est pour l'exemple tu voyais bien que sa fonctionnait sans (même si je sais qu'on doit toujours initialiser une Var)

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 786
    Par défaut
    Hello,

    Tes variables ne sont pas initialisées au bon endroit: il faut initialiser b juste avant le while du b, etc

    Edit: et ne pas modifier le code initial, mais reposter un code. La réponse de @Bousk perd de son sens....

  5. #5
    Membre averti
    Homme Profil pro
    étudiant
    Inscrit en
    Juillet 2019
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2019
    Messages : 23
    Par défaut
    Voila j'ai fait initialiser les variable avant leur boucle on arrive a un résultat qui se rapproche du final mais ya un soucis a la fin on veut 97 99, 98 99
    alors que sur le notre on a 99 98, 99 99

    j'ai fait comme ç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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #include <unistd.h>
     
    int ft_putchar(char c)
    {
        write(1, &c, 1);
    }
     
     void ft_print_comb2(void)
     {
         int a;
         int b;
         int c;
         int d;
     
         while (a <= 9)
         {
             b = 0;
             while(b <= 9)
             {
                 c = 0;
                 while (c <= 9)
                 { 
                     d = 0;
                     while (d <= 9)
                     { 
                         ft_putchar(48 + a);
                         ft_putchar(48 + b);
                         ft_putchar(' ');
                         ft_putchar(48 + c);
                         ft_putchar(48 + d);
                         ft_putchar(',');
                         d++;
                     }
                   c++; 
                 }
                b++;
             }
             a++;
         }
     }
     int main ()
     {
         ft_print_comb2();
     }
    Merci pour les précision déjà

    Ps : Dacc

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    - a n'est toujours pas initialisé
    - une variable non initialisée a une valeur inconnue et aléatoire
    - si ça marche c'est uniquement par chance, ça n'indique surtout pas un code bon
    - je vois pas pourquoi à la fin tu aurais 97,99 98,99 alors que le reste du temps tu as le deuxième chiffre qui évolue de 0 à 99 pendant que le premier est fixé; tu devrais avoir 97,99 98,00 98,01 ...

    Aussi utiliser '0' au lieu de 48 serait plus clair
    Et tu pourrait n'utiliser que 2 variables en faisant une division et un %
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Ici tous les nombres possibles sont énumérés. Sans aucune action pour sauter certains nombres, il ne vont pas disparaître par magie.

    A un moment tu as les chiffres a, b, c et d que tu affiches sous la forme de nombres «ab» et «cd». N'y a-t-il pas un test à faire sur a, b, c et d pour ne pas écrire les deux nombres qui correspondrait au nombre «ab» qui serait identique au nombre «cd».

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

Discussions similaires

  1. [débutant] gotoandstop pour revenir ?!?
    Par ajor dans le forum Flash
    Réponses: 13
    Dernier message: 27/09/2007, 16h55
  2. Réponses: 2
    Dernier message: 05/02/2004, 13h58
  3. [débutant]Documentation? boucle "while"? Session?
    Par o151181 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 19/01/2004, 15h20
  4. Réponses: 7
    Dernier message: 18/06/2003, 15h20
  5. Réponses: 3
    Dernier message: 25/11/2002, 14h15

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