Está en la página 1de 3

public class Matriz{

public int[][] matriz;


public int filas,columnas;
public Matriz(){
filas=1;
columnas=1;
}
public Matriz(int f,int c){
filas=f;
columnas=c;
matriz=new int[filas][columnas];
}
public void Llenar(int valor,int i,int j){ // Introduce un valor en la matriz en
la
// posicion i,j
matriz[i][j]=valor;
}
public int[] getFila(int k){ // Devuelve un vector con la fila k.
int[] row=new int[matriz[k].length];
for(int i=0;i<row.length;i++){
row[i]=matriz[k][i];
}
return row;
}
public int[] getColumna(int k){ // Devuelve un vector con la columna k.
int[] column=new int[matriz.length];
for(int i=0;i<column.length;i++){
column[i]=matriz[i][k];
}
return column;
}
public void Mostrar(){ // Muestra los elementos de la matriz.
System.out.println("Matriz:");
for(int i=0;i<filas;i++){
for(int j=0;j<columnas;j++){
System.out.print(matriz[i][j]+" ");
}
System.out.println();
}
}
}
---------------------- Clase Multiplicacion -----------------------------
public class Multiplicacion{
public Matriz A,B,C;
public boolean tieneSolucion;
public Multiplicacion(Matriz matrizA,Matriz matrizB){
A=matrizA;
B=matrizB;
InicializarMatrizDeSolucion();// Inicializa la matriz C si y solo si se puede.
if(tieneSolucion){
Multiplicar();
}
}
private void InicializarMatrizDeSolucion(){
if(A.columnas==B.filas){ // Condicion para la multiplicacion
C=new Matriz(A.filas,B.columnas);
tieneSolucion=true;
}
else{ // Si no se cumple no se puede multiplicar
C=new Matriz();
tieneSolucion=false;
}
}
private void Multiplicar(){ // Funcion que multiplica.
for(int i=0;i<C.filas;i++){ // Recorre toda la matriz
for(int j=0;j<C.columnas;j++){
C.matriz[i][j]=Elemento(i,j); // Y la llena con un entero.
}
}
}
private int Elemento(int i,int j){ // Entero que resulta de la multiplicacion
int[] fila=A.getFila(i); // Tomamos la fila "i" y la columna "j"
int[] columna=B.getColumna(j);
int resultado=0;
for(int k=0;k<fila.length;k++){ // Multiplicamos como se hace
resultado+=fila[k]*columna[k]; // normalmente
}
return resultado;
}
public Matriz Solucion(){ // Devolvemos la matriz C la que tiene la solucion.
return C;
}
}
---------------------- Clase Principal -----------------------------
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] arg){
Scanner cin=new Scanner(System.in);
System.out.print("\r");
Matriz A,B,C;
Multiplicacion m;
int f,c;
System.out.println("Dimensiones de la Matriz A:");
System.out.print(" - Filas : ");
f=cin.nextInt();
System.out.print(" - Columnas: ");
c=cin.nextInt();
A=new Matriz(f,c);
System.out.println("Dimensiones de la Matriz B:");
System.out.print(" - Filas : ");
f=cin.nextInt();
System.out.print(" - Columnas: ");
c=cin.nextInt();
B=new Matriz(f,c);
System.out.println("Introducir Elementos: ");
System.out.println("Matriz A:("+A.filas+"x"+A.columnas+")");
for(int i=0;i<A.filas;i++){
for(int j=0;j<A.columnas;j++){
A.Llenar(cin.nextInt(),i,j);
}
}
System.out.println("Matriz B:("+B.filas+"x"+B.columnas+")");
for(int i=0;i<B.filas;i++){
for(int j=0;j<B.columnas;j++){
B.Llenar(cin.nextInt(),i,j);
}
}
m=new Multiplicacion(A,B);
C=m.Solucion();
A.Mostrar();
B.Mostrar();
if(m.tieneSolucion){
C.Mostrar();
}
else{
System.out.println("No se puede resolver.");
}
}
}

También podría gustarte