Cómo trasponer una matriz en Java
Programa Java para obtener la matriz transpuesta de una matriz.
Dada una matriz A su transpuesta AT se obtiene intercambiando las filas por columnas y las columnas por filas.
Por ejemplo, si tenemos la matriz A de 2 filas y 4 columnas:
1 2 3 4 5 6 7 8
Su matriz transpuesta AT es una matriz de 4 filas y 2 columnas con este contenido:
1 5 2 6 3 7 4 8
La primera fila de A se convierte en la primera columna de la matriz transpuesta y la segunda fila de A se convierte en la segunda columna de la matriz transpuesta.
Si la dimensión de la matriz A es 2 x 3 (2 filas y 3 columnas) la dimensión de su matriz transpuesta será 3 x 2 (3 filas y 2 columnas).
En general si la matriz A se ha creado de tamaño A[filas][columnas] su matriz transpuesta se debe crear de tamaño AT[columnas]filas]
Solución:
Para obtener la matriz transpuesta de una matriz escribiremos un método que vamos a llamar matrizTranspuesta que reciba una matriz de enteros y devuelva su transpuesta.
El método para transponer una matriz lo podemos escribir así:
public static int[][] matrizTranspuesta(int[][] a) {
//creamos la matriz transpuesta
//el número de filas será igual al número de columnas de la matriz original
//el número de columnnas será igual al número de filas de la matriz original
int[][] t = new int[a[0].length][a.length];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
t[j][i] = a[i][j];
}
}
return t;
}
Programa completo para obtener una matriz transpuesta usando este método:
import java.util.Scanner;
public class ObtenerMatrizTranspuesta {
public static void main(String[] args) {
//crear matriz original de 2 filas y 3 columnas
int[][] M = new int[2][3];
//lectura de datos por teclado
leerDatos(M);
//mostrar matriz original
System.out.println("Matriz original");
mostrarMatriz(M);
//calcular la matriz transpuesta
int [][] T = matrizTranspuesta(M);
//mostrar matriz transpuesta
System.out.println("Matriz transpuesta");
mostrarMatriz(T);
}
//método para introducir datos a la matriz desde teclado
public static void leerDatos(int[][] M) {
Scanner sc = new Scanner(System.in);
System.out.println("Lectura de datos de la matriz:");
for (int i = 0; i < M.length; i++) {
for (int j = 0; j < M[i].length; j++) {
System.out.print("Elemento[" + i + "][" + j + "]=");
M[i][j] = sc.nextInt();
}
}
}
//método para obtener la transpuesta de una matriz
public static int[][] matrizTranspuesta(int[][] a) {
//creamos la matriz transpuesta
//el número de filas será igual al número de columnas de la matriz original
//el número de columnnas será igual al número de filas de la matriz original
int[][] t = new int[a[0].length][a.length];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
t[j][i] = a[i][j];
}
}
return t;
}
//método para mostrar una matriz por pantalla
public static void mostrarMatriz(int[][] A) {
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A[i].length; j++) {
System.out.printf("%5d", A[i][j]);
}
System.out.println();
}
}
}
No hay comentarios:
Publicar un comentario