Hallo allerseits,
ich versuche gerade ein kleines Sudoku-Programm zu basteln. Leider bringt mich folgendes Problem wiklich zum Verzweifeln; ich kann echt nicht mehr.
Ich habe ein Array mit 81 Feldern, in denen sich die einzelnen Ziffern des Spielfeldes befinden. Der Inhalt des Arrays kommt aus meiner grafischen Oberfläche. Ich verwende Auswahlfelder und frage den gewählten Index ab; ein leeres Feld hat daher die 0 als Wert.
iSpielfeld[x] = this->Spielfeld[i,j]->SelectedIndex;
Die Methode zum Zählen der leeren Felder funktioniert immer:
Nur mein Lösen-Algorithmus bringt mich um den Verstand. Dort wird beim Zugriff auf mein SpielfeldArray als Wert -1 angezeigt - iSpielfeldExt[x] = -1
Allerdings auch nicht immer, manchmal funktioniert es. Ich kann nicht mehr, bitte helft mir.
Alles anzeigen
ich versuche gerade ein kleines Sudoku-Programm zu basteln. Leider bringt mich folgendes Problem wiklich zum Verzweifeln; ich kann echt nicht mehr.
Ich habe ein Array mit 81 Feldern, in denen sich die einzelnen Ziffern des Spielfeldes befinden. Der Inhalt des Arrays kommt aus meiner grafischen Oberfläche. Ich verwende Auswahlfelder und frage den gewählten Index ab; ein leeres Feld hat daher die 0 als Wert.
iSpielfeld[x] = this->Spielfeld[i,j]->SelectedIndex;
Die Methode zum Zählen der leeren Felder funktioniert immer:
Nur mein Lösen-Algorithmus bringt mich um den Verstand. Dort wird beim Zugriff auf mein SpielfeldArray als Wert -1 angezeigt - iSpielfeldExt[x] = -1
Allerdings auch nicht immer, manchmal funktioniert es. Ich kann nicht mehr, bitte helft mir.
Quellcode
- int loese(int iSpielfeldExt[]) {
- //initialisiere alle Ziffern als moeglich
- bool moeglicheZiffern[81][9];
- for (int i = 0; i < 81; i++)
- for (int j = 0; j < 9; j++)
- moeglicheZiffern[i][j] = true;
- //Überprüfe für jedes Element
- for (int i = 0; i < 81; i++) {
- //Wenn Element in Feld i leer, dann kombiniere
- if (iSpielfeldExt[i] == 0) {
- //Überprüfe alle Elemente, die sich in der gleichen Spalte wie i befinden
- //Wenn Element vorhanden, dann ist diese Ziffer nicht mehr als Lösung für i möglich
- int x = i/9;
- x *=9;
- for (x; x<9; x++) {
- if ((iSpielfeldExt[x] != 0) && (x != i)) {
- moeglicheZiffern[i][iSpielfeldExt[x]-1] = false;
- }
- }
- ...