Sudoku, problem z warunkiem.
Ostatnio zmodyfikowano 2017-06-10 16:57
wld1337 Temat założony przez niniejszego użytkownika |
Sudoku, problem z warunkiem. » 2017-06-10 16:57:34 Na wstępie zaznaczę, że szukałem odpowiedzi na pytania w innych tematach związanych z sudoku, niestety opisane niżej polecenie działa nieco inaczej niż te proponowane przy typowym sudoku. Kod może wydać się nieczytelny, ze względu na obszerne komentarze - chciałem jak najlepiej przedstawić problem. bool koniec = false; do { printf( "Polecenie: " ); char polecenie[ 100 ]; fflush( stdout ); fgets( polecenie, 100, stdin ); if( strstr( polecenie, "ustaw" ) == polecenie ) { int y = polecenie[ 6 ] - 65; int x = polecenie[ 7 ] - 49; int nowa_wartosc = polecenie[ 9 ] - 48; for( int k = 0; k < 9; ++k ) { if( sudoku[ y ][ k ] == nowa_wartosc || sudoku[ k ][ x ] == nowa_wartosc || sudoku[ y ][ x ] != 0 ) { cout << "Nie mozna ustawic takiej wartosci<<endl; for( int y = 0; y < 9; y++ ) for( int x = 0; x < 9; x++ ) printf( "%s%d%s",(( x > 0 ) ? " " : "" ), sudoku[ y ][ x ],(( x == 8 ) ? "\n" : "" ) ); break; } } for( int p = 0; p < 9; ++p ) { if( sudoku[ y ][ p ] != nowa_wartosc && sudoku[ p ][ x ] != nowa_wartosc && sudoku[ y ][ x ] == 0 ) { sudoku[ y ][ x ] = nowa_wartosc; for( int y = 0; y < 9; y++ ) for( int x = 0; x < 9; x++ ) printf( "%s%d%s",(( x > 0 ) ? " " : "" ), sudoku[ y ][ x ],(( x == 8 ) ? "\n" : "" ) ); } } } } while( !koniec );
return EXIT_SUCCESS; }
Moje pytanie brzmi - co z drugim warunkiem jest nie tak, ze dla przypadku kiedy pole jest równe 0 ale wartość występuje w danym wierszu bądź kolumnie, i tak zostanie on uruchomiony? W efekcie najpierw spełniany jest warunek pierwszy - czyli tablica przepisywana bez zmian, a zaraz potem uruchamia się drug if i wypluwa tablicę sudoku ze zmienioną wartością w tym miejscu. Spędziłem nad tym trochę czasu i niestety nie jestem w stanie sam dostrzec i wyeliminować błędu. |
|
« 1 » |