Sudoku generieren funktioniert nicht.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sudoku generieren funktioniert nicht.

    Hallo Leute,
    Ich hab mich mal an einem Programm versucht das ein Sudoku generiert. Erst hab ich mich über's Internet versucht zu informieren doch ich hab keine Ansätze für das lösen des Problems gefunden. Deshalb hab ich selbst nachgedacht und habe folgendes rausbekommen

    Quellcode

    1. #include
    2. void gen (int *soduip[]) {
    3. char rh[9][9][1];
    4. char sp[9][9][1];
    5. int i,j,random;
    6. for(i=0; i<9;i++)
    7. {
    8. for (j=0; j<9;j++)
    9. {
    10. rh[i][j][0]=1;
    11. sp[i][j][0]=1;
    12. }
    13. }
    14. for (i=0;i<9;i++)
    15. {
    16. for (j=0; j<9;)
    17. {
    18. srand((int) time(NULL));
    19. random=(rand()%9);
    20. if ((rh[i][random][0]!=0) && (sp[j][random][0]!=0))
    21. {
    22. soduip[i][j]=random+1;
    23. rh[i][random][0]=0;
    24. sp[j][random][0]=0;
    25. j++;
    26. }
    27. }
    28. }
    29. }
    30. main() {
    31. int sodu[9][9];
    32. int *ip[9];
    33. int i, j;
    34. for (i=0;i<9;i++)
    35. {
    36. for(j=0; j<9; j++)
    37. {
    38. sodu[i][j]=0;
    39. }
    40. }
    41. for (i=0; i<9; i++)
    42. ip[i]=&sodu[i][0];
    43. gen(ip);
    44. for (i=0;i<9;i++)
    45. {
    46. for(j=0; j<9; j++)
    47. {
    48. printf("%d", sodu[i][j]);
    49. }
    50. printf("\n");
    51. }
    52. system("Pause");
    53. }
    Alles anzeigen

    Nunja, erstmal will ich noch anmerken das ich totaler Anfänger bin.
    Jetzt mein Problem. Das Programm wird zwar fehlerlos compiliert, aber nachdem es ausgeführt wird bringt es kein Ergebnis sondern Arbeitet und Arbeitet. Ich hab das Gefühl irgendwo eine Endlosschleife drin zu haben aber ich konnte keine finden.Es wär nett wenn ihr mir helfen könntet.
    Greetz SunShine.
    P.S. Falls ihr aus meinem Quelltext nicht schlau werdet kommentier ich ihn auch noch. :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von SunShine ()

  • So, das ganze jetzt nochmal in schön:

    Quellcode

    1. #include
    2. void gen (int *soduip[]) {
    3. char rh[9][9][1];
    4. char sp[9][9][1];
    5. int i,j,random;
    6. for(i=0; i<9;i++)
    7. {
    8. for (j=0; j<9;j++)
    9. {
    10. rh[i][j][0]=1;
    11. sp[i][j][0]=1;
    12. }
    13. }
    14. for (i=0;i<9;i++)
    15. {
    16. for (j=0; j<9;)
    17. {
    18. srand((int) time(NULL));
    19. random=(rand()%8);
    20. if ((rh[i][random][0]!=0) && (sp[j][random][0]!=0))
    21. {
    22. soduip[i][j]=random+1;
    23. rh[i][random][0]=0;
    24. sp[j][random][0]=0;
    25. j++;
    26. }
    27. }
    28. }
    29. }
    30. main() {
    31. int sodu[9][9];
    32. int *ip[9];
    33. int i, j;
    34. for (i=0;i<9;i++)
    35. {
    36. for(j=0; j<9; j++)
    37. {
    38. sodu[i][j]=0;
    39. }
    40. }
    41. for (i=0; i<9; i++)
    42. ip[i]=&sodu[i][0];
    43. gen(ip);
    44. for (i=0;i<9;i++)
    45. {
    46. for(j=0; j<9; j++)
    47. {
    48. printf("%d", sodu[i][j]);
    49. }
    50. printf("\n");
    51. }
    52. system("Pause");
    53. }
    Alles anzeigen


    Im Grunde kann die Endlosschleife ja nur hieraus resultieren:

    Quellcode

    1. if ((rh[i][random][0]!=0) && (sp[j][random][0]!=0))
    2. {
    3. soduip[i][j]=random+1;
    4. rh[i][random][0]=0;
    5. sp[j][random][0]=0;
    6. j++;
    7. }


    da das die einzige Stelle ist, in der du "j" an die eine Bedingung knüpfst.