Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher différente combinaison

    2 mars 2022 à 0:28:02

    Bonsoir 

    J'essaye de faire un exo avec des contrainte que vous allez comprendre en lisant mon code (boucle while seulement, pas de printf etc ..)

    j'ai vraiment du mal que sa soit avec les consigne ou la mise en place de ma penser algorithmique mais j'essaye et en essayant voila ce que j'ai pu produire 

    #include <unistd.h>
    
    void    ft_putchar(char c)
    {
        write(1, &c, 1);
    }
    
    void    ft_print_comb2(void)
    {
        int a;
        a = 0;
        int b;
        b = 0;
        int c;
        c = 0;
        int d = 1;
    
        while (a < b && c < d)
        {
            d++;
            if (d == 9)
            {
                c++;
            }
            else if (c == 9)
            {
                d = 2;
                c = 0;
                b++;
            }
            else if (b == 8)
            {
                ft_putchar('0' + a);
                ft_putchar('0' + b);
                ft_putchar('0' + c);
                ft_putchar('0' + d);
                a++;
            }
        }
    }
    
    int main()
    {
        ft_print_comb2();
    }



    Le programme compile mais sur la sortie j'ai rien 

    est ce que la façon dont j'ai abordé le problème est logique ? 

    EDIT : je dois affiché toutes différentes combinaison de deux nombres entre 0 et 99 dans l'ordre croissante 

    cela donne quelque choses comme ça 

    00 01, 00 02, 00 03, 00 04, 00 05, ........ 00 99, 01 02, 97 99, 98 99.

    -
    Edité par leprincefou 2 mars 2022 à 0:33:53

    • Partager sur Facebook
    • Partager sur Twitter
    Notre mesure du possible rend possible l'impossible  
      2 mars 2022 à 0:38:39

      Pour afficher quelque chose, il faudrait déjà rentrer dans la boucle while !

      leprincefou a écrit:

      avec des contrainte que vous allez comprendre en lisant mon code...

      Pas vraiment ! Le mieux c'est peut-être que tu explique ce que tu veux faire !

      Après, pour voir ce qui ce passe, le débogueur est tout à fait ce qu'il te faut !



      • Partager sur Facebook
      • Partager sur Twitter
      ...
        2 mars 2022 à 0:47:12

        J'utilise Vscode tu serait comment je l'utilise dessus ou autres ?
        • Partager sur Facebook
        • Partager sur Twitter
        Notre mesure du possible rend possible l'impossible  
          2 mars 2022 à 1:00:51

          leprincefou a écrit:

          J'utilise Vscode tu serait comment je l'utilise dessus ou autres ?


          Je ne comprends pas ta question.
          • Partager sur Facebook
          • Partager sur Twitter

          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

            2 mars 2022 à 1:06:17

            Tu te rends compte que ce qu'on te demande c'est simplement de parcourir les entiers de 0 à 99 inclus et de les afficher sur deux caractères avec un 0 préfixe pour les entiers plus petits que 10 ?

            quelque chose comme :

            for(int i=0; i<100; i++) {
                int dizaine = i/10 ;
                int unite = i % 10 ;
                printf("%c%c\n", '0'+dizaine, '0'+unite);
            }

            tu adapteras aux convention 42 …

            • Partager sur Facebook
            • Partager sur Twitter
              2 mars 2022 à 1:15:19

              Merci white c'est beaucoup plus clair maintenant 

              Pour le débogeur ça m'intéresse fort parce que a un moment sur papier je m'en mêle avec les boucle et tout je perd vite le fil

              Sauriez vous comment l'utiliser sur Vscode car j'ai la console de débogage mais je peut rien y faire et les tuto sur Yt ne parle que des version windows alors que je suis sur mac 

              -
              Edité par leprincefou 2 mars 2022 à 1:17:50

              • Partager sur Facebook
              • Partager sur Twitter
              Notre mesure du possible rend possible l'impossible  
                2 mars 2022 à 1:33:22

                google est ton ami … https://code.visualstudio.com/docs/cpp/lldb-mi

                savoir debuguer est indispensable (comme profiler ton code pour les fuites mémoires, tester ton code, indenter, …) mais le plus important est de pouvoir pondre un code correct …

                Chose que je n'ai pas réussie à faire :p car tu veux les combinaisons de deux nombres … ce qui serait plutôt :

                pour i de 0 à 98
                    pour j de i+1 à 99
                        afficher i,j

                un algo que je te laisse exprimer en mode 42 (avec des fonctions c'est mieux).

                • Partager sur Facebook
                • Partager sur Twitter
                  2 mars 2022 à 5:05:30

                  Je suppose que leprincefou sait qu'on peut ramener une boucle for à un while ...
                  Tant qu'a avoir 4 variables, pourquoi ne pas avoir implémenté 2 compteurs à 2 digits?
                  Avec une jolie fonction pour les incrémenter. :)

                  On s'arrête quand la fonction retourne 1.
                  (et avec un while svp)
                  -
                  int increment(int compteur[2]) {
                      int i = 1;
                      int carry = 1;
                      while(carry && i >= 0) {
                          carry += compteur[i];
                          compteur[i]=carry % 10;
                          carry /= 10;
                          if(carry) i--;
                      }
                      return carry;
                  }

                  -
                  Edité par PierrotLeFou 2 mars 2022 à 5:21:19

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Le Tout est souvent plus grand que la somme de ses parties.

                    2 mars 2022 à 14:19:05

                    Salut pierrot j'ai vue que t'avais passé un tableau de taille 3 (0,1,2) dans le paramètres de ta fonction 

                    j'ai essayé d'appeler ta fonction dans un main mais quel et le paramètres que je doit lui préciser ? 

                    White je m'y mets de suite merci !

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Notre mesure du possible rend possible l'impossible  
                      2 mars 2022 à 14:58:58

                      De taille 3? compteur[2] dans une déclaration réserve 2 positions.
                      Dans une expression, compteur[2] serait effectivement la 3ième position.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le Tout est souvent plus grand que la somme de ses parties.

                        2 mars 2022 à 15:00:04

                        Ah merci pour la précision

                        #include <unistd.h>
                        
                        void    ft_putchar(char c)
                        {
                            write(1, &c, 1);
                        }
                        
                        void ft_print_comb2(void)
                        {
                            int i;
                            int j;
                            i = 0;
                            j = 0;
                        
                            while (i < 98)
                            {
                                j = i + 1;     // j = 0 passe a 1 
                                while (j < 99) // tant que j (1) est plus petit que 99 on imprime 
                                {
                                    ft_putchar(i); // on imprime 0 
                                    ft_putchar(i); // on imprime 0 
                                    ft_putchar(' ');
                                    ft_putchar(i); // on imprime 0 
                                    ft_putchar(j); // on imprime 1
                                    ft_putchar(',');
                                    j++;
                                }
                            }
                            i++;
                        }
                        
                        int main()
                        {
                            ft_print_comb2();
                            ft_putchar('\n');
                        }
                        Voila ce que j'ai produit, il y a beaucoup de monde a qui je pourrait posé la question autour de moi, mais la plus part bosse sur des gros exo (re faire printf, re faire un mini shell ) j'ai pas envie de passé pour un idiot c'est pour ca que je vous inondes avec mes question ici (et encore je me retiens) 
                        Un grand merci pour toutes vos précision vraiment ! 
                        du coup pour revenir au code, regarder les commentaire pour comprendre ce que je pensait au moment de le produire 
                        Sauf que sur la sortie ca part dans tout les sens.

                        -
                        Edité par leprincefou 2 mars 2022 à 15:53:28

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Notre mesure du possible rend possible l'impossible  
                          2 mars 2022 à 17:12:47

                          leprincefou a écrit:

                          Sauf que sur la sortie ca part dans tout les sens.

                          Forcement, tu affiches les caractères correspondant au valeur numérique passée en paramètre a ta fonction, sans savoir à quel caractère il correspondent ! De ce coté la c'était mieux dans ton premier code !

                          Essais déjà d'utiliser ta fonction ft_putchar correctement avant d'aller plus loin ! Essais déjà d'afficher un simple nombre avec !

                          • Partager sur Facebook
                          • Partager sur Twitter
                          ...
                            2 mars 2022 à 18:07:12

                            #include <unistd.h>
                            
                            void ft_putchar(char c)
                            {
                                write(1, &c, 1);
                            }
                            
                            int main()
                            {
                                ft_putchar('1');
                                ft_putchar('2');
                                ft_putchar('\n');
                            }
                            Affiché un nombre ok je l'appel 2 fois dans ce cas
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Notre mesure du possible rend possible l'impossible  
                              2 mars 2022 à 18:16:54

                              D'après tous les posts que j'ai vus de l'école 42 et mes contacts avec le 42 Québec, j'aurais envie de te suggérer de suivre un autre cours.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Le Tout est souvent plus grand que la somme de ses parties.

                                2 mars 2022 à 18:22:42

                                Comment ca ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Notre mesure du possible rend possible l'impossible  
                                  2 mars 2022 à 18:32:29

                                  Heu ! la tu affiche des caractère pas un nombre !

                                  Affiche moi x avec ta fonction ft_putchar

                                  #include <unistd.h>
                                  
                                  void    ft_putchar(char c)
                                  {
                                      write(1, &c, 1);
                                  }
                                  
                                  int main(void)
                                  {
                                      int x = 56;
                                  
                                      // Code d'affichage ici !
                                  
                                      return 0;
                                  }

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  ...
                                    2 mars 2022 à 19:13:55

                                    A tout hasard: le i++ est en-dehors du while(i....)

                                    Edit: En reprenant l'idée de WhiteCrow,

                                    void blank(void) {
                                    	ft_putchar(' ');
                                    }
                                    
                                    void ft_print_comb2(void) {
                                        for(int i=0; i<100; i++) {
                                    		int dizaine = i/10 ;
                                    		int unite = i % 10 ;
                                    		ft_putchar('0');
                                    		ft_putchar('0'+dizaine);
                                    		blank();
                                    		ft_putchar('0');
                                    		ft_putchar('0'+unite);
                                    		blank(); blank(); blank();
                                    	}
                                    }

                                    -
                                    Edité par edgarjacobs 2 mars 2022 à 19:21:42

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                                      2 mars 2022 à 21:50:32

                                      int main(void)
                                      {
                                          int x = 57;
                                          
                                          if (x != 0) 
                                          {
                                            ft_putchar(x / 10 + '0'); // merci je comprend un mieux l'affichage du putchar la
                                            ft_putchar(x % 10 + '0'); // division ainsi que le modulo c'est la formule 
                                         }
                                          return 0;
                                      }

                                      -
                                      Edité par leprincefou 2 mars 2022 à 21:52:49

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Notre mesure du possible rend possible l'impossible  

                                      Afficher différente combinaison

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown