#include #define FALSE 0 #define TRUE !(FALSE) //char zahl=0, x=0, y=0 ; int 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 (int zeile= 0; zeile <9; zeile++) // for zeile in range(9): { for (int spalte= 0; spalte <9; spalte++) // for spalte in range(9): { printf(" %i", zahlen[zeile][spalte]); // print(str(zahlen[zeile][spalte]), end=" ") } printf("\n\n"); } } int zahl_moeglich(int x, int y, int zahl) { // zahl prüfen auf koordinaten for (int 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 (int 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; } } char xLO, yLO; xLO = (x/3)*3; //xLO = (x//3)*3 // startwert koordinaten im feld 3x3 yLO = (y/3)*3; for (int xD=0; xD!= 3; xD++) //for xD in range(3): { for (int yD=0; yD!= 3; yD++) //for yD in range(3): { if (zahlen[(int)xLO+xD][(int)yLO+yD] == zahl) //if zahlen[xLO+xD][yLO+yD] == zahl: { // printf ("False_3x3\n"); return FALSE; } } } // printf ("True\n"); return TRUE; } void loesung() // def loesung(): { for (int x=0; x< 9; x++) // for x in range(9): { for (int y=0; y< 9; y++) // for y in range(9): { if (zahlen[x][y] == 0) // if zahlen[x][y] == 0: { for (int 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(x,y,zahl))// 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 ; // } } } } 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; }