Buenos días.
Lo primero, el código acostúmbrate a decorarlo usando la opción que corresponda en el desplegable "Highlight". Con esto consigues dos cosas:
* Cumplir las normas del foro
* Que el código sea legible
Cita:
Iniciado por luchon78 Pero ahora cuando lo ejecuto me da solución invalida muchas veces y no una como quisiera
A ver, si lo que estabas intentando ahí era comprobar filas y columnas... eso son dos bucles independientes, no dos anidados... además, cada bucle tiene que cubrir el rango (0,9]. Como además tienes que evitar comparar una celda consigo misma, cada bucle tendrá que incluir un if... algo tal que:
Código C++:
Ver originalbool ver=true;
for(int i=0; i<9 && ver; ++i )
{
if( i != filaAct)
ver = mat[filaAct][colAct] != mat[i][colAct];
}
for(int j=0; j<9 && ver; ++j )
{
if( j != colAct)
ver = mat[filaAct][colAct] != mat[filaAct][j];
}
if( ver )
cout << "Solución correcta" << endl;
else
cout << "Solución incorrecta" << endl;
Al código anterior le faltan algunos detalles:
- Hay que ejecutar los bucles para cada celda del sudoku... si te fijas hay dos variables filaAct y colAct que no están declaradas en ninguna parte
- Hay que comprobar que no se repite ningún número dentro de un mismo cuadrante
- El algoritmo debe dar una solución incorrecta si se encuentra con alguna celda que esté vacía, sin número asignado
La función
verificarDigito ha de funcionar prácticamente igual que la función
VerificarTablero... la única diferencia es que
VerificarTablero tiene que chequear todas las celdas del sudoku mientras que
verificarDigito únicamente debe preocuparse por chequear una celda... fíjate que si eres capaz de aislar el código que permite chequear una celda en una función independiente que reciba dos argumentos (la fila y la columna), la función
VerificarTablero la construyes con dos bucles anidados (para recorrer el sudoku) y una llamada a esta nueva función.
Un saludo