Tengo un problema con la siguiente funcion, necesito que me recorra filas y columnas de una matriz sudoku y compare a ver si alguno de sus valores se repite, pero no lo hace correctamente, parece que solo me compara las q el quiere, ayuda por favor
int check(int sudoku[ALTO][ANCHO], int fila, int columna, int valor){
int e, error=0;
for (e=0; e<ANCHO; e++){
if (sudoku[fila][e]==valor){
error = 1;
}
}
for (e=0; e<ALTO; e++){
if (sudoku[e][columna]==valor){
error = 1;
}
}
return error;
}
¿Tienes inicializados todos los valores del sudoku?, es decir, los espacios en blanco tienen algún valor, si no es así colócalos en 0 o -1, o que se yo, porque de lo contrario tendrán "Basura" y generara problemas al momento de comparar.
$4!u2
Ye lo he solucionado, el problema estaba en que en la funcion en la que introducia los valores de fila y columna, los pedia entre 1 y 9, los metia entre 1 y 9 y en esta funcion solo comparaba entre 0 y 8
depure un poco el codigo y al final me quedo así ^^
int checkFila(int sudoku[ALTO][ANCHO], int fila, int valor){
int e;
for (e=0; e<ANCHO; ++e){
if (sudoku[fila-1][e] == valor){
return 1;
}
}
return 0;
}
int checkColumna(int sudoku[ALTO][ANCHO], int columna, int valor){
int e;
for (e=0; e<ALTO; ++e){
if (sudoku[e][columna-1] == valor){
return 1;
}
}
return 0;
}
Gracias