Duda tonta con matrices en java...

Moderador: iuav

Temas relacionados: Java, JavaBeens, JBuilder, JDK, Applets, etc

Duda tonta con matrices en java...

Notapor ihuesa » Lun Ene 22, 2007 3:57 pm

Buenas, estoy descubriendo como quien dice el website y la verdad es que me está siendo muy útil.

Pese a todo, me ha surgido una duda muy tonta en java, a ver si alguien puede ayudarme.

Resulta que tengo que tratar una matriz. Lo que tengo que hacer es comprobar, para cada elemento de la misma, cuantos "vecinos" distintos de 0 tiene.

Lógicamente, no es lo mismo si estoy en una esquina(que tendría tres vecinos) que si estoy en algún punto por el centro de la matriz(que tendría 8 vecinos).

Sólo se me ocurre resolver esto a lo bruto, es decir, poniendo un par de for para recorrer la matriz e ir comprobando cada elemento si es de una esquina, de una fila/columna del borde o si pertenece a los elementos centrales y ya calcular los vecinos una vez sepa esto.

Claro, queda demasiado espeso y poco elegante...seguro que hay algo mejor.

¿Alguna sugerencia?

Mil gracias por adelantado!!!
ihuesa
Novato
Novato
 
Mensajes: 2
Registrado: Lun Ene 22, 2007 3:48 pm


Re: Duda tonta con matrices en java...

Notapor latindev » Lun Ene 22, 2007 5:11 pm

Puedes utilizar esta tecnica:

Código: Seleccionar todo
  1. // Puntos adyacentes posibles.  (8 vecinos)

  2. int dirs[8][2] =

  3. {

  4.     {1,-1},

  5.     {1,0},

  6.     {1,1},

  7.     {0,1},

  8.     {-1,1},

  9.     {-1,0},

  10.     {-1,-1},

  11.     {0,-1},

  12. };

  13. #define Y  1

  14. #define X  0

  15.  



Ahora solo queda verificar cada punto adyacente con un codigo como este:

Código: Seleccionar todo
  1. int VerificarVecinos(int i,int j)

  2. {

  3.   int count = 0;

  4.   for(int k = 0 ; k < 8; k++)

  5.   {

  6.      if((((i + dirs[k][Y]) >= 0) && ((i + dirs[k][Y]) < n)) &&

  7.      (((j + dirs[k][X]) >= 0) && ((j + dirs[k][X]) < m)))

  8.      {

  9.          if(matriz[i + dirs[k][Y]][j + dirs[k][X]] != 0)

  10.          {

  11.              count++;

  12.          }

  13.      }

  14.   }

  15.   return count;

  16. }



n y m es el tamaño de la matriz.
Imagen
Avatar de Usuario
latindev
Administrador
Administrador
 
Mensajes: 1062
Registrado: Lun Jun 02, 2003 8:30 pm
Ubicación: Peru


Notapor ihuesa » Lun Ene 22, 2007 5:18 pm

Muchas gracias!!

Rápido y eficiente, así da gusto.
ihuesa
Novato
Novato
 
Mensajes: 2
Registrado: Lun Ene 22, 2007 3:48 pm

Notapor Vicitor2006 » Sab Jun 09, 2007 8:49 pm

Si, eso me ha servido a mi tambien
Estoy aki para aprender
Imagen
Avatar de Usuario
Vicitor2006
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 127
Registrado: Mié May 23, 2007 11:38 am


    

Volver a Java

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron