Código
/* AUTOR: d3n3k4 (Dnk!) * WEB: http://d3n3k4.blogspot.com/ * FECHA: 01/DIC/2010 * DESCRIPCION: * - Contiene varias clases que realizan calculos matriciales como: * - suma y resta de matrices. * - producto de matrices. * - calcular la matriz transpuesta de una matriz. * - comprobar si dos matrices son iguales. * - comprobar si una matriz es cuadrada o no. * - comprobar si una matriz es simetrica. * - Se iran añadiendo mas funcionalidades, como multiplicacion por una constante, * calcular determinante, rango, etc... y seran expuestas en mi web. * NOTA: Este codigo es libre y puede ser usado,modificado... siempre y cuando se * mantenga los creditos y comentarios del autor. */ import java.util.Scanner; public class CalC { public static int[][] leeMatriz(int nFila, int nCol){ int[][] matriz = new int[nFila][nCol]; for (int i = 0; i < nFila; i++) { for (int j = 0; j < nCol; j++) { matriz[i][j] = entrada.nextInt(); } } return matriz; } if (matriz != null) { for (int i = 0; i < matriz.length; i++) { mat += "| "; for (int j = 0; j < matriz[0].length; j++) { mat += matriz[i][j] + " "; } mat += " |\n"; } } return mat; } public static int[][] sumaMatrices(int[][] mat1,int[][] mat2,boolean resta) { int[][] matSal = null; if (mat1.length == mat2.length && mat1[0].length == mat2[0].length) { if (resta == true) { //cambia de signo mat2 para despues sea restada. for (int i = 0; i < mat2.length; i++) { for (int j = 0; j < mat2[0].length;j++) { mat2[i][j] = mat2[i][j] * -1; } } } matSal = new int[mat1.length][mat1[0].length]; for (int i = 0; i < mat1.length; i++) { for (int j = 0; j < mat1[0].length; j++) { matSal[i][j] = mat1[i][j] + mat2[i][j]; } } } return matSal; } public static int[][] transpuesta(int[][] mat1) { int[][] M_trans = new int[mat1[0].length][mat1.length]; for (int i = 0; i < M_trans.length; i++) { for (int j = 0; j < M_trans[0].length;j++) { M_trans[i][j] = mat1[j][i]; } } return M_trans; } public static int[][] productoMatriz(int[][] mat1,int[][] mat2) { int[][] matSal = null; if (mat1[0].length == mat2.length) { matSal = new int[mat1.length][mat2[0].length]; for (int i = 0; i < matSal.length; i++) { for (int j = 0; j < matSal[0].length; j++) { for (int k = 0; k < mat2.length; k++) { matSal[i][j] += mat1[i][k] * mat2[k][j]; } } } } return matSal; } public static boolean esIgual(int[][] mat1,int[][] mat2) { boolean igual = false; if (mat1.length == mat2.length && mat1[0].length == mat2[0].length) { igual = true; for (int i = 0; i < mat1.length; i++) { for (int j = 0; j < mat1.length; j++) { if (mat1[i][j] != mat2[i][j]) { igual = false; } } } } return igual; } public static boolean esCuadrada(int[][] mat1) { boolean cuadrada = false; if (mat1.length == mat1[0].length) { cuadrada = true; } return cuadrada; } public static boolean esSimetrica(int[][] mat1) { boolean simetrica = false; int[][] mat2 = transpuesta(mat1); if (esIgual(mat1,mat2)) { simetrica = true; } return simetrica; } /*int[][] matriz1,matriz2,resultado = null; Scanner entrada = new Scanner(System.in); int filas = 0, columnas = 0;*/ /*System.out.println("Introduce el numero de filas"); filas = entrada.nextInt(); System.out.println("Introduce el numero de columnas"); columnas = entrada.nextInt(); System.out.println("Introduce la primera matriz:"); matriz1 = leeMatriz(filas,columnas);*/ /*System.out.println("Introduce el numero de filas"); filas = entrada.nextInt(); System.out.println("Introduce el numero de columnas"); columnas = entrada.nextInt(); System.out.println("Introduce la primera matriz:"); matriz2 = leeMatriz(filas,columnas);*/ //resultado = sumaMatrices(matriz1,matriz2,true); //resultado = transpuesta(matriz1); //resultado = productoMatriz(matriz1,matriz2); /*if (resultado == null) { System.out.println("Error"); }*/ /*if (esIgual(matriz1,matriz2)) { System.out.println("Son iguales"); } else { System.out.println("No son iguales"); }*/ /*if (esCuadrada(matriz1)) { System.out.println("Es cuadrada"); } else { System.out.println("No es cuadrada"); }*/ /*if (esSimetrica(matriz1)) { System.out.println("Es simetrica"); } else { System.out.println("No es simetrica"); }*/ //System.out.print(escribeMatriz(resultado)); } }
xDnk!
Recuerden respeten el autor