/* 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];
Scanner entrada
= new Scanner
(System.
in);
for (int i = 0; i < nFila; i++) {
for (int j = 0; j < nCol; j++) {
matriz[i][j] = entrada.nextInt();
}
}
return matriz;
}
public static String escribeMatriz
(int[][] 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;
}
public static void main
(String[] args
) { /*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));
}
}