| Usuario |
Problema de rangos |
Desconocido
|
| Enviado - 21/7/2004 |
| |
Hola estoy programando un 3 en raya...y os explico:
Es un programa que te pide por pantalla que metas la casilla donde kieres poner una X y el ordenador, mediante un algoritmo, pone una O. El algoritmo es: mira las casillas vecinas con X + nº de X de la misma fila + nº de X de la misma columna - nº de casillas vecinas con O - nº de O de la misma fila - nº de O de la misma columna
Mi problema es el siguiente, que no controlo que no se me salga de rangos...porque cuando (x ej) meto la casilla 0,0 que seria la 1º fila, 1º columna, me mira las casillas vecinas por tanto, me mira tambien casillas que no forman parte de la matriz...no se si me explico...os pongo el bucle:
for(int i=fila; i==fila;i++){
for(int j=columna; j==columna;j++){
for(int f = (i - 1) ; f<=(i+1);f++){
for(int c = (j-1) ; c<=(j+1);c++){
if (matriz[f][c] == true) {
vecinosX++;
matrizAux[i][j]++;
}
}
}
}
ese bucle me mira los vecinos con X, tengo otro análogo para las O, y los correspondientes para misma fila y misma columna... Os agradecería que me contestarais.
Gracias, Un saludo.
JAVI |
| |
|
mercuccio
7 Mensaje(s)
|
| Enviado - 7/8/2004 |
| |
| creo que debes usar un swich para hacer una secuencia de preguntas del estilo casilla donde empiezo a mirar - nºcasillas donde mirar > 0 y eso lo preguntas para no salirte por la izq, por la drch, por arriba y por abajo |
| |
|
coolrisk
5 Mensaje(s)
|
| Enviado - 12/8/2004 |
| |
Solamente debes verificar si las coordenadas estan en el rabgo permitido antes de intentar acceder al elemento de la matriz.
En tu codigo:
for(int i=fila; i==fila;i++){
for(int j=columna; j==columna;j++){
for(int f = (i - 1) ; f<=(i+1);f++){
for(int c = (j-1) ; c<=(j+1);c++){
/*aumentas unas restricciones */
if (f>=0 && f<=maxFil && c>=0 && c<=maxCol && matriz[f][c] == true) {
vecinosX++;
matrizAux[i][j]++;
}
}
}
}
Con esto verificas si estas en el rango (0..MaxFil o maxCol) y evitas el acceder a un elemento fuera de lo permitido en tu matriz.
|
| |
|
|
|