Ver Mensaje Individual
  #11 (permalink)  
Antiguo 11/12/2013, 01:31
Avatar de rgf1987
rgf1987
 
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 12 años, 1 mes
Puntos: 22
Respuesta: Matrices en java

Cita:
Iniciado por SilverDante Ver Mensaje
En "quitaColumna" dentro del FOR haces otro FOR, y hay una "k", ¿para que la utilizas?

PD: no, es una actividad para trabajar con matrices, la veo un poco compleja. XD
Pues veamos, a ver como te lo explico.
Tenemos una matriz de por ejemplo 3x3, para quitar una columna lo que haces es copiar los datos que te interesan de esa matriz en otra matriz que sera de tamaño 3x2 ya que vas a quitar una columna.

tu lo que hacías en tu ejemplo es recorrer la matriz y en cada posición hacer la siguiente comprobación

Código Java:
Ver original
  1. if(j!=c)
  2.        destino[i][j] = m[i][j];
  3. }

el problema aquí es que con el for estas recorriendo la matriz original que es de 3x3 entonces I y J van a llegar a valer 2, es decir se ira accediendo a la matriz de la siguiente forma:

destino[0][0] = m[0][0]; <---BIEN
destino[0][1] = m[0][1]; <---BIEN
destino[0][2] = m[0][2]; <---MAL, ERROR

La nueva matriz es de tamaño 3x2 porque se lo indico en la siguiente linea que precede a los for:

Código Java:
Ver original
  1. int[][] destino = new int[mxn.length][mxn[0].length-1];

Entonces al intentar acceder a la posición destino[0][2] se lanzara un error

Código Java:
Ver original
  1. Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

Ya que esa posición no existe en la nueva matriz.

Para arreglarlo, en vez de utilizar la variable J ( en tu caso) o col(en el mio), utilizo una variable auxiliar K que solo incremento cuando realizo copia de una matriz a otra, de esta forma K no llega a valer 2.

¿Lo entendiste?
Vuelvo a repetirte que es mejor que vayas dibujando en un papel! porque mentalmente sino estas aconstumbrado te costará!