Tengo un problema que me esta volviendo loca con 2 variables que cambian de valor sin venir a cuento, y ya no sé cómo resolverlo.
Lo que estoy haciendo es un tablero que represento con la clase Board, que es una matriz 4x4 de estructuras. Las estructuras representan celdas de un tablero de ajedrez, que estan formadas por 2 booleanos, uno que es true cuando se supone q hay una ficha puesta, y otra que es true cuando no hay ninguna otra pieza que amenace esa casilla.
Tengo que ir probando recursivamente qué diferentes soluciones puede tener este problema (es el de las 8 reinas, pero con 4, no sé si os suena). Para eso ejecuto la siguiente funcion.
Código C++:
El problema está en que n y m, que inicialmente valen 0 y 0 respectivamente, cambian inexplicablemente de valor a 187182783 (o algo parecido) al hacerVer original
void Board::putNextQueen(int i, int j) { for (int n = i; n < 4; n++) { for (int m = j; m < 4; m++) { cout << "n = " << n << ", m = " << m; if (this->squares[n][m].isSafe) { cout << " is safe " << endl; Board newBoard; newBoard.copySquares(this->squares); newBoard.put(n, m); newBoard.putNextQueen(n,m); } else cout << "is NOT safe " << endl; } } }
Código C++:
Ver original
Board newBoard;
Os copio a continuación el constructor de la clase, que crea un board vacío.
Código C++:
¿Qué estoy haciendo mal? Seguro que es algo más obvio de lo que creo, pero yo no encuentro el problema y no sé como esquivarlo!Ver original
Board::Board() { Square square; square.hasQueen = false; square.isSafe = true; for (int i = 0; i <= 4; i++) { for (int j = 0; j <= 4; j++) { squares[i][j] = square; } } }
Espero que me podáis ayudar. Muchas gracias por adelantado!