#include #define FALSE 0 #define TRUE !(FALSE) char zeile=0, spalte=0, zahl=0, x=0, y=0, xi=0, yi=0, xLO, yLO, xD, yD; char zahlen[9][9] = { {0,0,0, 0,0,7, 0,3,0}, {0,0,0, 0,0,0, 5,0,0}, {0,5,9, 0,0,2, 7,0,0}, {1,0,0, 4,0,0, 0,0,8}, {0,2,0, 0,0,5, 0,0,0}, {0,4,3, 8,0,0, 0,6,0}, {9,3,0, 0,0,0, 0,0,0}, {0,0,0, 0,7,0, 8,2,0}, {0,8,0, 9,4,0, 0,0,5} }; void ausgabe() { for (zeile= 0; zeile !=9; ++zeile) // for zeile in range(9): { for (spalte= 0; spalte !=9; ++spalte) // for spalte in range(9): { printf(" %i", zahlen[zeile][spalte]); // print(str(zahlen[zeile][spalte]), end=" ") } printf("\n\n"); } } char zahl_moeglich() { // zahl prüfen auf koordinaten for (xi=0; xi!= 9 ;xi++) // spalten regel: spalte ist konstant, 9_zeilen werden ünerprüft { if (zahlen[xi][y] == zahl) // zahlen = überprüfte zahl - darf nicht sein: { printf("False_spalte\n"); return FALSE; } } for (yi=0; yi!= 9; yi++) // zeilen regel: zeile ist konstant, 9_spalten werden ünerprüft { if (zahlen[x][yi] == zahl) // zahlen = überprüfte zahl - darf nicht sein: { printf("False_zeile\n"); return FALSE; } } xLO = (x/3)*3; //xLO = (x//3)*3 // startwert koordinaten im feld 3x3 yLO = (y/3)*3; for (xD=0; xD!= 3; xD++) //for xD in range(3): { for (yD=0; yD!= 3; yD++) //for yD in range(3): { if (zahlen[xLO+xD][yLO+yD] == zahl) //if zahlen[xLO+xD][yLO+yD] == zahl: { printf ("False_3x3\n"); return FALSE; } } } printf ("True\n"); return TRUE; } char loesung() // def loesung(): { for (x=0; x!= 9; x++) // for x in range(9): { for (y=0; y!= 9; y++) // for y in range(9): { if (zahlen[x][y] == 0) // if zahlen[x][y] == 0: { for (zahl= 1; zahl!= 10; zahl++) // for zahl in range(1, 10): // Zahlen 1-9 testen { //****** diese schleife wird z.t.w. nicht richtig ausgefürt ***** if (zahl_moeglich()) // if zahl_moeglich(x,y,zahl): { zahlen[x][y] = zahl; // zahlen[x][y] = zahl loesung(); // loesung() zahlen[x][y] = 0; // zahlen[x][y] = 0 } } return 0; // } } } } int main(void) { //printf ("Test\n"); //ausgabe(); //zahl_moeglich(3, 6, 3 ); // False_spalte //zahl_moeglich(4, 7, 5 ); // False_zeile loesung(); ausgabe(); getchar(); return 0; }