AMIGOS necesito su ayuda para crear un programa q multiplique tres matrices A,B Y C, cada una de tamaño N*M, donde 0<N<100 Y 0<M<100
Mediante el teclado definir el tamaño d las matrices
Imprimir la matriz A, B Y el resultado en C
Copyright © 2024 ANSWERS.MX - All rights reserved.
Answers & Comments
Verified answer
Hola, bueno espero que se entienda. Es como multiplicamos normalmente. Son 2 Clases y una Principal.
---------------------- Clase Matriz -----------------------------
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.");
}
}
}
Bueno espero que te sirva aunque sea solo un poco. Suerte.
aquí tienen el algoritmo de multiplicación de matrices explicado y hecho en java