domingo, 13 de mayo de 2012

Suma, multiplicación y traspuesta de una matriz en JAVA


Calculos con matrices en Java.


public class Matriz {
 
    //almacena los datos de la matriz usada en los calculos
    int [][] maDatos;

    public Matriz(int f, int c){

        //if anidados que verifican si la matriz es cuadrada para evitar matrices
        //rectangulares.
     
        //si las filas son igual a la columna
        if (f  ==  c){
            maDatos = new int [f][c];
        }
        //si las filas son menores que las columnas usar las columnas
        else if(f < c){
            maDatos = new int [c][c];
        }
        //si las filas son mayores que las columnas usar las filas
        else {
            maDatos = new int [f][f];
        }
    }

    //permite insertar un arreglo al instanciar el objeto
    public Matriz (int [][] d){
        maDatos  = d;
    }

    //metodo que suma dos matrices
    public Matriz sumar(Matriz m){
        int laRes[][] = new int [maDatos.length][maDatos[0].length];
        //instrucciones for que permiten sumar una matriz elemento
        //por elemento
        for(int i = 0; i < maDatos.length; i++){
            for (int j = 0; j < maDatos[0].length; j++){
                laRes [i][j] = maDatos[i][j] + m.maDatos[i][j];
            }
        }

        return new Matriz (laRes);
    }

    //metodo que genera la traspuesta de una matriz
    public Matriz traspuesta(){
        int laRes[][] = new int [maDatos[0].length][maDatos.length];
        for(int i = 0; i < maDatos.length; i++){
            for (int j = 0; j < maDatos[0].length; j++){
                laRes [j][i] = maDatos[i][j];
            }
        }

        return new Matriz (laRes);
    }

    //metodo que multiplica dos matrices
    public Matriz multiplicar(Matriz m){
        int laRes[][] = new int [maDatos.length][maDatos[0].length];

        //se necesitan tres instrucciones for para multiplicar cada
        //fila de la una matriz por las columnas de la otra
        for(int i = 0; i < maDatos.length; i++){
            for (int j = 0; j < maDatos[0].length; j++){
                for (int k = 0; k < maDatos[0].length; k++){
                    laRes [i][j] += maDatos[i][k] * m.maDatos[k][j];
                }
            }
        }

        return new Matriz (laRes);
    }

   //permite visualizar la matriz
    public void mostrar(){
        for(int i = 0; i < maDatos.length; i++){
            for (int j = 0; j < maDatos[0].length; j++){
                System.out.print("|" + maDatos[i][j]);
            }
            System.out.print("|\n");
        }
        System.out.print("\n");
    }
}