Mostrando entradas con la etiqueta intercambiar filas y columnas. Mostrar todas las entradas
Mostrando entradas con la etiqueta intercambiar filas y columnas. Mostrar todas las entradas

lunes, 30 de enero de 2017

Matrices: Intercambiar filas y columnas

Crea un programa para transponer filas por columnas en un array bidimensional de números enteros.


Ejemplo:
Array Original...
  7  7  3  1 10
  2  8  8  3  9
  2  5  5  8  3
 10  5  4  4  6
  4  3  1  6  5
  6  2  7  8 10
  3 10  4  3  9
  2  3  5  8  1
  9  6  8  3  9

Array transpuesto...
  7  2  2 10  4  6  3  2  9
  7  8  5  5  3  2 10  3  6
  3  8  5  4  1  7  4  5  8
  1  3  8  4  6  8  3  8  3
 10  9  3  6  5 10  9  1  9


SOLUCIÓN EN JAVA:
package transponerarrays;


public class TransponerArrays {
    
    //Genero un array bidimensional del tamaña que indican como parámetro las filas y las columnas
    //de números aleatorios entre 1 y 10
    static int[][] generaArrayAleatorio(int filas, int columnas){
        int[][] matriz=new int[filas][columnas];
        int i,j;
        
        for (i=0 ; i < matriz.length ; i++){
            for (j=0 ; j < matriz[i].length ; j++){
                matriz[i][j] = (int)(Math.random()*10+1);
            }
        }
        return matriz;
    }
    
    //Muestro el array bidimensional que pasan como parámetro e imprimo línea por línea
    static void muestraArray(int[][] matriz){
        int i,j;
        
        for (i=0; i < matriz.length ; i++){
            for (j=0 ; j < matriz[i].length ; j++){
                System.out.printf("%3d", matriz[i][j]);
            }
            System.out.println();
        }
    }
    
    //Con esta función intercambio filas por columnas. A partir del array que recibe 
    //como parámetro genera otro array transpuesto.
    static int[][] transponer(int[][] matriz){
        int[][] resultado=new int[matriz[0].length][matriz.length];
        int filas,columnas;
        
        for (columnas=0 ; columnas < matriz[0].length ; columnas++){
            for (filas=0 ; filas < matriz.length ; filas++){
                resultado[columnas][filas]=matriz[filas][columnas];
            }
        }
        return resultado;
    }
    
    public static void main(String[] args) {
        int [][]matriz;
        
        matriz=generaArrayAleatorio(9,5);
        System.out.println("Array Original...");
        muestraArray(matriz);
        System.out.println();
        System.out.println("Array transpuesto...");
        matriz=transponer(matriz);
        muestraArray(matriz);
    }
}