#include <cstdlib>
#include <iostream>
#include <conio.c>
#include <iomanip>
using namespace std;
void MultiplicarMatriz();
int Fila1, Fila2;
int Columna1, Columna2;
int **Matriz1, **Matriz2, **MatrizR;
int main()
{
int Opcion = 0;
while (Opcion != 2)
{
system("CLS");
cout<<"\t \t \t UNIVERSIDAD MARIANO GALVEZ \n \n";
cout<<"\t \t Proyecto Final Estructura De Datos \n";
cout<<"\t \t Carlos Rolando Calan Ajquill Junio/2006 \n";
cout<<"\t \t Carne: 0910-04-13429 5to. Semestre \n";
cout<<"\t \t ----------------------------------------------\n";
cout<<"\t \t Multiplicacion de Matrices \n ";
cout<<"\t \t ----------------------------------------------\n\n";
cout<<"\t 1.- Ingreso de Datos \n";
cout<<"\t 2.- Salir \n";
cout<<"\t -------------------------------------------------\n";
cout<<"\t \t Seleccione una opcion \t";
cin>>Opcion;
switch (Opcion)
{
case 1:
cout<<"OPCION 1:";
MultiplicarMatriz();
break;
case 2:
cout<<"OPCION 2:";
system("CLS");
cout<<"Hecho por Carlos Rolando Calán Ajquill, hasta pronto ......\n\n";
break;
default:
cout;
cout<<"Opcion Invalida \n\n";
break;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
void MultiplicarMatriz()
{
system("CLS");
cout<<"Multiplicacion de Matrices"<<endl;
cout<<"\n Cuantas Filas tendra la matriz A ";
cin>>Fila1;
cout<<"\n Cuantas Columnas tendra la matriz A ";
cin>>Columna1;
cout<<"\n Ingrese los datos de la matriz A";
Matriz1 = new int*[Fila1];
for(int i=0;i<Fila1;i++)
Matriz1[i]=new int[Columna1];
for(int i=0; i<Fila1; i++)
{
for(int j=0; j<Columna1; j++)
{
gotoxy(5+3*j,9+i);
cin>>Matriz1[i][j];
}
}
system("CLS");
cout<<"Multiplicacion de Matrices \n";
cout<<"\n Cuantas Filas tendra la matriz B ";
cin>>Fila2;
cout<<"\n Cuantas Columnas tendra la matriz B ";
cin>>Columna2;
cout<<"\n Ingrese los datos de la matriz B";
Matriz2 = new int*[Fila2];
for(int i=0; i<Fila2; i++)
Matriz2[i] = new int[Columna2];
for(int i=0; i<Fila2; i++)
{
for(int j=0; j<Columna2; j++)
{
gotoxy(5+3*j,9+i);
cin>>Matriz2[i][j];
}
}
if(Columna1 != Fila2)
{
system("CLS");
cout<<"No se puede ejecutar la multiplicacion porque NO";
getch();
return;
}
MatrizR = new int*[Fila1];
for(int i=0; i<Fila1; i++)
MatrizR[i] = new int[Columna2];
for(int i=0; i<Fila1; i++)
for(int j=0; j<Columna2; j++)
{
int Suma=0;
for(int k=0; k<Columna1; k++)
Suma+= Matriz1[i][k] * Matriz2[k][j];
MatrizR[i][j]=Suma;
}
system("CLS");
cout<<setw(11)<<"Datos de la Matriz A \n";
for(int i=0; i<Fila1; i++)
{
cout<<endl;
for(int j=0; j<Columna1; j++)
cout<<setw(5)<<Matriz1[i][j];
}
cout<<"\n\n"<<setw(11)<<"Datos de la Matriz B \n";
for(int i=0; i<Fila2; i++)
{
cout<<endl;
for(int j=0; j<Columna2; j++)
cout<<setw(5)<<Matriz2[i][j];
}
cout<<"\n\n"<<setw(11)<<"Datos de la Matriz Resultante \n";
for(int i=0; i<Fila1; i++)
{
cout<<endl;
for(int j=0; j<Columna2; j++)
cout<<setw(5)<<MatrizR[i][j];
}
for(int i=0; i<Fila1; i++)
{
delete[] Matriz1[i];
delete[] MatrizR[i];
}
for(int i=0; i<Fila2; i++)
delete[] Matriz2[i];
delete[] Matriz1, Matriz2, MatrizR;
getch();
}
