necesito crear un metodo para encontrar en un array de dos dimensiones, un numero distinto de cero que esté rodeado por ceros.
habia pensado en crear un bucle for para recorrer mi array de dos dimensiones, y si encuentra un valor distinto de cero que mire si los elementos de su alrededor son cero. esto ultimo no se como ponerlo...
Es que el número de ceros que puede haber es muy grande ,tu dices si está
rodeado de ceros¿?
si, encontrar los numeros que estan rodeados de ceros en el array
Bien, tenemos esto:
---012
------
0--000
1--010
2--000
Por tanto, array[1][1] es el elemento "base".
ahora, un bucle:
int x = ... // X de la base (array[X][Y])
int y = ... // Y de la base (array[X][Y])
for(int i=-1;i<2;i++)
for(int j=-1;j<2;j++)
if(!(i==0 && j==0)) //Obviamente, el elemento base va a ser diferente de cero. Lo omitimos.
if(array[i+x][j+y]!=0) return 0; // Se ha dado que un elemento no era 0. Retornamos false (suponiendo que sea una función)
return 1; //Al acabar, si no ha retornado aún, significa que los elementos eran 0.
Bueno, ese sería el algoritmo básico. Luego tú tendrías que comprobar que no estea en un lado del array. Recuerda que si está a un lado de el array, "array[i+x][j+y]" va a dar elementos negativos o por encima del tamaño.
Saludos :D
he usado tu idea pero aun no me funciona, no se que tengo mal para que no funcione...
public int cuentaNumerosAislados() {
for (int i=0; i< array.length; i++){
for (int j = 0; j < array
.length; j++){
if (array [j] !=0){
for(int x = i - 1; x < i+1; x++){
for(int y = j-1; y < j+1; y++){
if(array- [y]==0)
return true;
}
}
}
}
}
return false; }
Vuelve a mirar el código que te puse. No lo copiaste bien. Hay 2 bucles for. Al array es unidireccional.