Partage
  • Partager sur Facebook
  • Partager sur Twitter

Souci avec switch case beak et avec les fonctions sans paramattre

Sujet résolu
    17 avril 2006 à 19:24:26

    Bonjour, je vous envois un code et je n'arrive pas ce qui dérrange, il ne prend pas les case 2 et 3 (enfin vous verrez lors de la compilation) ensuite le deuxième soucis c'est la segmentation fault qu'il m'envois quand j'execute (apres avoir mes les cases 2 et 3 en commentaire) je ne vois pas d'ou elle vient, je pense que c'est au passage de ma fonction qui ne prend pas de paramettre mais je ne vois pas comment corriger cela...
    Merci d'avance pour votre aide...


    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    //prototypes
    void generer_sodoku();
    void resoudre_sodoku();
    void proposer_sodoku();

    int main()
    {
         int v;
         int choix;
         printf("Menu\n 1- Proposer votre Sodoku\n 2-Generer un sodoku aleatoiremnt\n 3-Résoudre votre sodoku");

         scanf("%d",&v);

         switch(v)
         case 1:
              {
              generer_sodoku();
              break;
              }
         
         case 2:
              {
              generer_sodoku();
              break;
              }
         
         case 3:
              {
              resoudre_sodoku();
              break;
              }
         system("PAUSE");

    }

    void generer_sodoku()
    {
         int tab[9][9];
         int i;
         int j;
         int k;
         int r;
         int s;
         int q;

         for(k=0;k<9;k++)
         {
                         for(i=0;i<9;i++)
                         {
                                                              for(j=0;j<9;j++)
                                                              {
                                                                              r=10*rand();
                                                                              s=10*rand();
                                                                              q=10*rand();
                                                                              tab[r][s]=q;
                                                              }
                         }
         }
         printf("%d",tab[i][j]);
    }
    • Partager sur Facebook
    • Partager sur Twitter
      17 avril 2006 à 19:29:46

      Juste un petit truc:
      Dans generer sudoku: pour tes "for" tu trovue pas ça beaucoup des pas d'indentation de 32? :-°


      Sinon j'ai aucune idée pour ton prob dsl :)
      • Partager sur Facebook
      • Partager sur Twitter
        17 avril 2006 à 19:45:04

        C'est vrai j'ai viré les k ca fait plus simple et plus jolie snon a l'aide
        • Partager sur Facebook
        • Partager sur Twitter
          17 avril 2006 à 19:47:55

          hmmmmmm essaye plutot comme ca :

               switch(v)
               case 1:
                    generer_sodoku();
                    break;
               
               case 2:
                    generer_sodoku();
                    break;
               
               case 3:
                    resoudre_sodoku();
                    break;
          • Partager sur Facebook
          • Partager sur Twitter
            17 avril 2006 à 19:48:01

            r = 10 * rand();
            s = 10 * rand();

            et tout de suit après :

            tab[r][s] = q;

            rand te renvoie un nombre entre 0 et RAND_MAX qui est à mon avis très très grand, d'ou le seg fault.

            Je suppose que tu veux un nombre entre 0 et 9 pour r et s, il aurait fallu utiliser le modulo :

            r = rand() % 10;

            % et le reste de la division euclidienne, rand() aura beau renvoyer un énorme nombre, si tu le divise par 10 le reste tombera toujours entre 0 et 9 compris.
            • Partager sur Facebook
            • Partager sur Twitter
              17 avril 2006 à 19:51:08

              Pour le switch ca ne marche pas sinon pour les modulo ca va mieu merci
              • Partager sur Facebook
              • Partager sur Twitter
                17 avril 2006 à 19:52:19

                dsl dsl je me suis trompé lol :


                     switch(v)
                     {
                     case 1:
                          generer_sodoku();
                          break;
                     
                     case 2:
                          generer_sodoku();
                          break;
                     
                     case 3:
                          resoudre_sodoku();
                          break;
                      }
                • Partager sur Facebook
                • Partager sur Twitter
                  17 avril 2006 à 19:53:50

                  Et il manque des accolades, la sytaxe est :
                  switch
                  {
                  case:
                  (...)
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 avril 2006 à 19:54:31

                    Pour le switch ca marche toujours pas mais pour les rand merci ca va beaucoup mieu
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 avril 2006 à 20:08:22

                      initialise tes variables i, j, k ... à 0
                      et initialise rand() : srand(time(NULL));
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 avril 2006 à 22:50:59

                        Citation : WhiteTiGer


                        Je suppose que tu veux un nombre entre 0 et 9 pour r et s, il aurait fallu utiliser le modulo :


                        Pourquoi ? Le tableau fait 9 x 9. Les indices vont de 0 à 8, donc %9.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !

                        Souci avec switch case beak et avec les fonctions sans paramattre

                        × 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