Closed martunud closed 3 months ago
¿Tenés idea al menos en cuál de las funciones aborta? Más allá de eso, tendrías que evitar hacer estas cosas
if(mat3x3Val(m, i, j)){ bien = mat3x3Val(m, i, j); } porque estás calculando todo dos veces. Además sólo asign;as a bien el valor 1 si alguna de las submatices (o filas o columnas) está bien, y tienen que estar todas bien. Tendría que ser
if(!mat3x3Val(m, i, j)){ return 0; }
Perfecto, ahi lo corregi, tambien me di cuenta que uno de los fors estaba de mas. Con lo del error me salto esto: ==53707==The signal is caused by a READ memory access.
#1 0x10194555b in mat3x3Val ej20.c:115
#2 0x101945250 in sudokuSolver ej20.c:87
#3 0x101943b0e in main ej20.c:17
Estas excediendo el tamaño del vector seguramente pq accedes con un numero >=10 fijate que en el chequedo de rango pusiste && y va ||
Aca:
(mat[i][j] <= 0 && mat[i][j] > 9)
Asi como esta va a dar siempre falso no hay numero <= 0 y > 9
Claroo, ahi lo corregi era eso, pero aborta en este assert: char sudoku3[DIM][DIM] = { {2,8,1,9,7,6,5,4,2}, {3,4,7,5,3,8,1,9,6}, {5,6,9,2,1,4,8,7,3}, {6,7,4,8,5,2,3,1,9}, {1,3,5,7,4,9,6,2,8}, {9,2,8,1,6,3,7,5,4}, {4,1,2,6,8,5,9,3,7}, {7,9,6,3,2,1,4,8,5}, {8,5,3,4,9,7,2,6,1} };
assert(sudokuSolver(sudoku3)==0);
Deberia fallar con la primera fila (hay 2 2), cuando llegue a casa lo reviso
Yo marqu;é esto
_Además sólo asign;as a bien el valor 1 si alguna de las submatices (o filas o columnas) está bien, y tienen que estar todas bien. Tendría que ser
if(!mat3x3Val(m, i, j)){ return 0; }_
y decís que lo corregiste. Pero veo esto
int valor = mat3x3Val(m, i, j); if(valor){ bien = valor; }
y seguis haciendo lo mismo: le asignás 1 a bien si alguna de las submatrices está bien, sin importar el resto. Tienen que aprender a poder seguir el código que hicieron.
Ahi va, perdon Marcelo me maree con las correcciones, ahi lo corregi bien y paso el test, muchas gracias.
Hola, ahi estaba fijandome ejercicios de la guia para repasar y me habia quedado pendiente terminar bien este (el de sudoku). Me salta un error de segmentation fault y no se por que. Es medio largo pero si encuentran el error me serviria mucho (me compila sin warnings):