/* Lectura y escritura de una matriz, producto de dos matrices, y extracción de una fila o de una columna de una matriz */
package productomatrices; import java.util.Scanner; /* * @author RLR */ public class ProductoMatrices { public static void main(String[] args) { // TODO code application logic here Scanner sc=new Scanner(System.in); System.out.print("\nPRODUCTO DE 2 MATRICES "); System.out.print("\nDame FILAS y COLUMNAS de la primera matriz: "); int n=sc.nextInt(); int m=sc.nextInt(); float[][] A = leerMatriz(n,m); escribirMatriz(A); System.out.print("\nDame FILAS y COLUMNAS de la segunda matriz: "); int k=sc.nextInt(); int p=sc.nextInt(); float[][] B = leerMatriz(k,p); escribirMatriz(B); System.out.print("\nLa MATRIZ PRODUCTO \n"); escribirMatriz(multiplicarMatrices(A,B)); System.out.print("\nDi un numero de columna: "); int col=sc.nextInt(); System.out.print("\nEsta columna en la Matriz primera es:\n "); float[][] x = new float[1][]; x[0] = obtenerColumna(A,col); escribirMatriz(x); System.out.print("\nDi un numero de fila: "); int fila=sc.nextInt(); System.out.print("\nEsta fila en la Matriz segunda es:\n "); float[][] y = new float[1][]; y[0] = obtenerFila(B,fila); escribirMatriz(y); System.out.println("\n\nPulsa Tecla+Return para acabar.\n"); String FIN=sc.next(); } public static float[][] leerMatriz(int n, int m) { float[][] A = new float[n][m]; Scanner sc=new Scanner(System.in); for(int i=0;i<n;i++) { System.out.print("Elementos de la fila " + (i+1) + ": " ); for(int j=0;j<m;j++) A[i][j]=sc.nextFloat(); } return A; } public static void escribirMatriz(float[][] M) { Scanner sc=new Scanner(System.in); if(M==null) { System.out.print("Matriz vacia!! \n"); return; } int n = M.length; int m = M[0].length; System.out.print("Elementos de esta matriz: "); for(int i=0;i<n;i++) { System.out.print("\n"); for(int j=0;j<m;j++) System.out.print(M[i][j] + " "); } System.out.print("\n"); } public static float[][] multiplicarMatrices(float[][] A, float[][] B) { Scanner sc=new Scanner(System.in); int n = A.length; int m = A[0].length; int k = B.length; int p = B[0].length; if(m!=k) return null; float[][] C = new float[n][p]; for(int i=0;i<n;i++) for(int j=0;j<p;j++) for(int r=0;r<k;r++) C[i][j] += A[i][r]*B[r][j]; return C; } public static float[] obtenerColumna(float[][] M, int col) { int n = M.length; int m = M[0].length; if(m<col) { System.out.print("Numero de columna no valido!! \n"); return null; } float[] x = new float[n]; for(int i=0;i<n;i++) x[i] = M[i][col-1]; return x; } public static float[] obtenerFila(float[][] M, int fila) { int n = M.length; int m = M[0].length; if(n<fila) { System.out.print("Numero de fila no valido!! \n"); return null; } float[] x = new float[m]; //System.arraycopy(M[fila-1],0,x,0,m); for(int i=0;i<m;i++) x[i] = M[fila-1][i]; return x; } }