Array, ich dreh bald durch
-
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.
Die Methode zum Zählen der leeren Felder funktioniert immer:
int leereFelder(int iSpielfeldExt[]) { int anzahlLeereFelder = 0; for (int i = 0; i < 81; i++) { if (iSpielfeldExt[i] == 0) anzahlLeereFelder++; } return anzahlLeereFelder; }
Allerdings auch nicht immer, manchmal funktioniert es. Ich kann nicht mehr, bitte helft mir.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; } } ...
-
Nun gut, ich bin dämlich. Aber ich habe jetzt einen ganzen Tag gebraucht, um auf die Lösung zu kommen.

Das Feld beinhaltete -1 genau dann, wenn ich die Ziffer über die Tastatur eingegeben habe, und nicht aus der Auswahlliste ausgewählt habe. Ich dachte, dass durch die Beschränkung der Eingabemöglichkeiten auf die vorgegebenen Auswahlfelder, der selectierte Index automatisch gewählt wird.Ich muss also den Inhalt der ComboBox auslesen und in int konvertieren; nur wie? Atoi funktioniert nicht und System::IConvertible::ToInt16 ist lt. vc++ nicht möglich.
-
Hm, wie waers mit DoDataExchange und DDX_Text
-
Also eine String in int bekommst Du z.b. mit "atoi"
-
oder _wtoi, falls unicode eingestellt ist
-
Ah, sorry hab überlesen das "atoi" nicht funktioniert, was heiß eigentlich "funktioniert nicht" genau ? Gibt eine Fehlermeldung ?
gruss
Marcus