//#include <stdio.h>
//#include <string.h>
#include <iostream>
using namespace std;
#define INTENTOS 3
int** reservaMemoria(int fil,int col){
int **p;
p = new int*[fil];
for(int n=0;n<fil;n++){
p[n] = new int[col];
}
return p;
}
void ingresoMatriz(int **&A,int **&B,int &filA,int &colA,int &filB,int &colB){
int n;int m;
cout<<"Ingrese filas de A"<<endl;
cin>>filA;
cout<<"Ingrese columnas de A"<<endl;
cin>>colA;
int datos;
A = reservaMemoria(filA,colA);
for(n=0;n<filA;n++){
for(m=0;m<colA;m++){
cout<<"ingrese datos matriz A["<<n+1<<","<<m+1<<"]"<<endl;
cin>>datos;
A[n][m] = datos;
}
}
for(int n=0;n<filA;n++){
cout<<" "<<endl;
for(int m=0;m<colA;m++){
cout<<A[n][m]<<" ";
}
cout<<" "<<endl;
}
cout<<" "<<endl;
cout<<"Ingrese filas de B"<<endl;
cin>>filB;
cout<<"Ingrese columnas de B"<<endl;
cin>>colB;
B = reservaMemoria(filB,colB);
for(n=0;n<filB;n++){
for(m=0;m<colB;m++){
cout<<"ingrese datos matriz B["<<n+1<<","<<m+1<<"]"<<endl;
cin>>B[n][m];
}
}
for(int n=0;n<filB;n++){
cout<<" "<<endl;
for(int m=0;m<colB;m++){
cout<<B[n][m]<<" ";
}
cout<<" "<<endl;
}
cout<<" "<<endl;
}
void productoMatriz(int **A,int **B,int **C,int filA,int colA,int filB,int colB){
int acumulador;
C = reservaMemoria(filA,colB);
if(filB == colA){
for(int n=0;n<filA;n++){
cout<<"Generando producto matricial..."<<endl;
for(int k=0;k<colB;k++){
C[n][k]=0;
acumulador=0;
for(int m=0;m<filB;m++){//aca seria el problema !!
acumulador = ((A[n][m]) * (B[m][k]));
C[n][k] = acumulador + C[n][k];
}
}
}
cout<<"Fin de Producto Matricial"<<endl;
}else{
cout<<"El producto de matrices no es valido,dado que el numero de filas de B es distinto al numero de columnas de A"<<endl;
return;
}
}
void menu(){
int i=-1;int filA,colA,filB,colB;
int **A = NULL;int **B = NULL;int **C = NULL;
while(i!=0){
cout<<"***********MENU***********"<<endl;
cout<<"*1:Ingreso de datos manualmente******"<<endl;
cout<<"*2:Ingreso de datos aleatorios*******"<<endl;
cout<<"*3:Producto Matricial****************"<<endl;
cout<<"*4:Mostrar Resultado*****************"<<endl;
cout<<"*0:Salir*****************************"<<endl;
cin>>i;
switch(i){
case 1:ingresoMatriz(A,B,filA,colA,filB,colB);break;
//case 2:ingresoAleatorio(A,B,maxColA,maxColB,maxFilA,maxFilB);break;
case 3:productoMatriz(A,B,C,filA,colA,filB,colB);break;
//case 4:mostrarResultado(C,colA,filB);break;
}
}
cout<<"Bye!!"<<endl;
}
int main(){
menu();
}