Partage
  • Partager sur Facebook
  • Partager sur Twitter

Su-do-ku

Suite

    18 avril 2006 à 21:41:08

    Je vous envois mon dernier code, cette fonction est sensé prendre le sudoku entrée par l'utilisateur, le probleme, je determine le nombre de valeur a entrer et programme un compteur initialisé en zero et fait un boucle de façon a ce que tant que le compteur ne depasse pas la valeur determinée par l'utilisateur on redemadne a l'utilisateuir d'entrée une autre valuer... mais ma boucle while (ou do... while ne marche pas)
    Merci de m'aider je vous joins le code

    static void proposer_sodoku()
    {
    int tab[9][9];
        //initialisatin du tableau
         int i;
         int j;
         int k=0;
         int r;
         int s;
         int q;
         int n;
         for(i=0;i<9;i++)
                         {
                                    for(j=0;j<9;j++)
                                    {
                                                    tab[i][j]=0;
                                    }
                         }
         printf("Determiner le nombre de case a remplir\n");
         scanf("%d\n",&n);
         printf("n=%d\n",n);
         do
         {
         for(i=0;i<9;i++)
                         {
                                    for(j=0;j<9;j++)
                                    {
                                                printf("Detrminez le cordonnées a remplir\n");
                                                scanf("%d",&r);
                                                scanf("%d",&s);
                                                printf("Entrez vos valeurs\n");
                                                scanf("%d",&tab[r][s]);
                                                if(tab[r][s]>9||tab[r][s]<0)
                                                {
                                                    printf("valeur trop grande, entrez une autre\n");
                                                    tab[r][s]=0;
                                                }
                                                k++;
                                              printf("k=%d\n",k);

                                               
                                    }
                                    printf("\n");
                         }
                          printf("\n");
        }
        while(k<n);
       
        printf("Votre sodoku souhaiter");
         for(i=0;i<9;i++)
                         {
                                    for(j=0;j<9;j++)
                                    {
                                                r=rand()%10;
                                                s=rand()%10;
                                                q=rand()%10;
                                                tab[r][s]=q;
                                                printf("%d ",tab[r][s]);
                                    }
                                    printf("\n");
                         }
                          printf("\n");
       
           
    }
    Merci d'avance
     
    • Partager sur Facebook
    • Partager sur Twitter
      18 avril 2006 à 23:09:49

      je vais y alle en commentant dans ton code parce que sinon mes explicarion seront pas tres claire...

      et en meme temp je vais te dire deux ou trois autre truc qui d'apres moi devrai ameliroer ta fonction...

      static void proposer_sodoku()
      {
      int tab[9][9];
          //initialisatin du tableau
           int i;
           int j;
           int k=0;
           int r;
           int s;
           int q;
           int n;
           for(i=0;i<9;i++)
                           {
                                      for(j=0;j<9;j++)
                                      {
                                                      tab[i][j]=0;
                                      }
                           }
           printf("Determiner le nombre de case a remplir\n");
           scanf("%d\n",&n);
           printf("n=%d\n",n);
           do
           {

           /* pourquoi mettre c'est deux boucle ici... pour moi voila le fais que ta boucle do while() ne fonctionne pas d'apres toi, puisque a chaque fois tu demandera 81 fois (9*9) de rentre coordone et valeur. cela temp que k<n (ce qui sera assurement toujours vrai la plus grand valeur possible de n etant 81). alors le simple fais d'enleve c'est deux for() reglerai le probleme*/
           for(i=0;i<9;i++)                 
                           {
                                      for(j=0;j<9;j++)
                                      {
                                                  printf("Detrminez le cordonnées a remplir\n");
                                                  scanf("%d",&r);
                                                  scanf("%d",&s);
                                                  printf("Entrez vos valeurs\n");
                                                  scanf("%d",&tab[r][s]);
                                                  if(tab[r][s]>9||tab[r][s]<0)
                                                  {
                                                      printf("valeur trop grande, entrez une autre\n");
                                                      tab[r][s]=0;
      /* ici tu dit d'entre une autre valeur si la valeur entre n'est pas bonne (au fait 0 ne devrai pas etre valide non plus...) mais tu ne donne pas la possibiliete a l'utilisateur d'entre une autre valeur... a moin que tu te sois dit qu'il la rentrerai alors que la boucle repasserai mais alors l'utilisateur doit entre a nouveau les coordone (sa peut passer) mais sourtout ton conteur k auras ete incremente alors il y aura un nombre a quelque part que l'utilisateur ne pouras pas rentre a la fin. alors soit tu fais un do while qui encadre ton scanf() et ta condition qui se repete tant que ta condition est vrai (un chifre non comprit entre 1 et 9) ou soit tu mes ton k++ dans un else alors ils ne serai pas incremente mais alors tu redemande les coordone*/
                                                  }
                                                  k++;
                                                printf("k=%d\n",k);

                                                 
                                      }  /* pourquoi faire des changement de ligne ici?? */
                                      printf("\n");
                           }/* et meme chose ici??*/
                            printf("\n");
          }
          while(k<n);
         
          printf("Votre sodoku souhaiter");
           for(i=0;i<9;i++)
                           {
                                      for(j=0;j<9;j++)
                                      {/* alors la je ne comprend plus rien... tu fais entre un sudoku par l'utilisateur et ensuit tu remplace toute les valeur par d'autre genere au hasard... qui en passant peuvent ne pas respecte les regle du sudoku et peuve aussie s'ecrire une par dessus l'autre. encor une fois je ne vois pas l'utilite de tes for() tu n'utilise pas leur valeur alor il serait plus simple de n'en faire qu'un seul se rendant a 81...

      mais bon je vais y alle avec se que je croi que se code est sense faire donc affiche le sudoku entre par l'utilisateur alor tu garde tes boucle for() comme elle sont, et ensuite tu ne fais qu'un 'printf("%d ",tab[i][j]);' tu auras alors le sudoku qui s'affichera*/

                                                  r=rand()%10;
                                                  s=rand()%10;
                                                  q=rand()%10;
                                                  tab[r][s]=q;
                                                  printf("%d ",tab[r][s]);
                                      }
                                      printf("\n"); /* tu ne met pas de changement de ligne ici sinon chacun de tes chifre s'ecrirons sur une ligne differente */
                           }
                            printf("\n");
         
             
      }


      je doit aussi te dire que je travaille moi aussi sur un programme de sudoku alors ils se peut que certeine chose que je tes dit ne fonctionne pas avec ce que tu veut faire, j'ai repondu en fonction de se que je veut que ma fonction d'entre d'un sudoku fasse mais ils est possible que tu ne veule pas quel fasse la meme chose.

      en esperent t'avoir aide.
      • Partager sur Facebook
      • Partager sur Twitter

      Su-do-ku

      × 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