Foro de elhacker.net

Programación => Java => Mensaje iniciado por: fprg en 28 Noviembre 2013, 21:10 pm



Título: numero rodeado de ceros en array
Publicado por: fprg en 28 Noviembre 2013, 21:10 pm
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...


Título: Re: numero rodeado de ceros en array
Publicado por: trolleoatodos en 28 Noviembre 2013, 22:01 pm
Es que el número de ceros que puede haber es muy grande ,tu dices si está
rodeado de ceros¿?


Título: Re: numero rodeado de ceros en array
Publicado por: fprg en 28 Noviembre 2013, 23:18 pm
si, encontrar los numeros que estan rodeados de ceros en el array


Título: Re: numero rodeado de ceros en array
Publicado por: ivancea96 en 28 Noviembre 2013, 23:20 pm
Bien, tenemos esto:
Código
  1. ---012
  2. ------
  3. 0--000
  4. 1--010
  5. 2--000

Por tanto, array[1][1] es el elemento "base".
ahora, un bucle:
Código
  1. int x = ...  // X de la base (array[X][Y])
  2. int y = ...  // Y de la base (array[X][Y])
  3. for(int i=-1;i<2;i++)
  4.    for(int j=-1;j<2;j++)
  5.        if(!(i==0 && j==0))  //Obviamente, el elemento base va a ser diferente de cero. Lo omitimos.
  6.            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)
  7. return 1;  //Al acabar, si no ha retornado aún, significa que los elementos eran 0.
  8.  

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


Título: Re: numero rodeado de ceros en array
Publicado por: fprg en 29 Noviembre 2013, 19:33 pm
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; }


Título: Re: numero rodeado de ceros en array
Publicado por: ivancea96 en 29 Noviembre 2013, 20:59 pm
Vuelve a mirar el código que te puse. No lo copiaste bien. Hay 2 bucles for. Al array es unidireccional.