Hola!
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++:
Ver originalvoid 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;
}
}
}
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 hacer
Os copio a continuación el constructor de la clase, que crea un board vacío.
Código C++:
Ver originalBoard::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;
}
}
}
¿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!
Espero que me podáis ayudar. Muchas gracias por adelantado!