Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jadelabe en 18 Junio 2012, 16:02 pm



Título: Recorrer sudoku
Publicado por: jadelabe en 18 Junio 2012, 16:02 pm
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

Código:
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;
}


Título: Re: Recorrer sudoku
Publicado por: STANHMAL en 18 Junio 2012, 18:42 pm
¿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


Título: Re: Recorrer sudoku
Publicado por: jadelabe en 18 Junio 2012, 20:24 pm
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í ^^
Código:
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