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

si te fijas en el resultado que te da, lo que te ocurre es que la columna que deseas borrar pasa a valer 0 y una de las columnas queda sin copiar en la nueva matriz, eso es porque la nueva matriz no almacena los valores correctamente

Imaginandonos que quieres borrar la columna 1 de la siguiente matriz,

1 2 3
1 2 3
1 2 3
^
Queremos borrar esta

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

en la primera iteración J vale 0 y C vale 0 también entonces en la matriz "destino" en la posición destino[0][0] no se inserta nada... y J pasa a valer J+1, entonces esa posición de la matriz pasa a cargarse con 0 por defecto.
Por eso cada vez que J vale lo mismo que C se inserta 0.

Es decir, tienes que usar una variable auxiliar que haga referencia a las nueva matriz así:


Código Java:
Ver original
  1. public static int[][] quitaColumna(int [][]mxn){
  2.         Scanner teclado=new Scanner (System.in);
  3.         int f;
  4.         System.out.print("\n");
  5.         System.out.println("Que columna desea eliminar.");
  6.         f=teclado.nextInt();
  7.         f=f-1;
  8.         int[][] destino = new int[mxn.length][mxn[0].length-1];      
  9.         for(int fil=0;fil<mxn.length;fil++){
  10.             for(int col=0, k=0;col<mxn[0].length;col++){
  11.                 if(col!=f){
  12.                     destino[fil][k]=mxn[fil][col];
  13.                     k++;
  14.                 }
  15.             }
  16.         }
  17.         return destino;        
  18.     }

Pruebalo y modifica el código y como te dije haz una traza paso a paso para verlo claramente :).

¿Que estas preparando exámenes?

Un saludo.

PD.

para hacer referencia a las columnas... se hace como hago yo en el for interno para recorrer la matriz

matriz[0].length

no hace falta que pases el tamaño como parámetro ;)