#include<iostream>
using namespace std;
void menu();
int **inicializar_matriz (int n_filas , int n_columnas);
void leer_matriz(int **matriz, int n_filas, int n_columnas);
void escribir_matriz(int **matriz, int n_filas, int n_columnas);
void eliminar_matriz(int **matriz, int n_filas, int n_columnas);
void multiplicacion(int **matriz, int f, int c, int **matriz1, int c1, int f1, int **matriz2, int f2, int c2);
//------------------------ Cuerpo Principal ---------------------//
int main(){
menu();
}
//--------------- Inicializar Matriz -----------------------//
int **inicializar_matriz (int n_filas , int n_columnas){
int i;
int **matriz; //es pointer a pointer
matriz= new int *[n_filas];//hecho un array de pointeres
for(i=0;i<n_filas;i++){
matriz[i]= new int [n_columnas];//porque ahora queremos ints, no pointeres
/*int es un value
int* es un array de unas values
int** es un matriz, o array de arrays*/
}
return matriz;
}
//--------------------- Leer Matriz -------------------------//
void leer_matriz(int **matriz, int n_filas, int n_columnas){
int i,j;
for(i=0;i<n_filas;i++){
for(j=0;j<n_columnas;j++){
cout << "Introduzca el elmento de la fila "<< i+1 << " Columna " <<j+1 <<":";
cin >> *(*(matriz+i)+j);
}
}
}
//-------------------- Escribir Matriz ------------------------//
void escribir_matriz(int **matriz, int n_filas, int n_columnas){
int i,j;
for(i=0;i<n_filas;i++){
for(j=0;j<n_columnas;j++){
cout << *(*(matriz+i)+j) << " ";
}
cout << endl;
}
}
//--------------------- Eliminar Matriz -------------------------//
void eliminar_matriz(int **matriz, int n_filas, int n_columnas){
int i;
for(i=0; i<n_filas;i++){
delete[] matriz[i];
}
delete[] matriz;
matriz = NULL;
}
//Multiplicacion
void multiplicacion(int **matriz, int f, int c, int **matriz1, int c1, int f1, int **matriz2, int f2, int c2){
int i,j,k,suma;
matriz2= inicializar_matriz(f, c);
for(i=0;i<f;i++)
{
for(j=0;j<c;j++){
suma=0;
for(k=0;k<c;k++){
suma+=(matriz[i][k]*matriz1[k][j]);
}
//cout<<suma<<"\n";
*(*(matriz2+i)+j)=suma;
//matriz[i][j]=suma;
//cout << *(*(matriz2+i)+j) << " ";
}
c2++;
f2++;
}
/*for(i=0;i<f2;i++){
for(j=0;j<c2;j++){
cout << *(*(matriz2+i)+j) << " ";
}
cout << endl;
}*/
}
void menu(){
int **matriz = NULL,**matriz1= NULL,**matriz2= NULL;
int f=0, c=0, f1=0, c1=0,op=0;
do{
cout<<"\n \t\E[46m \E[00m";
cout<<"\n \t\E[46m \E[00m \E[0;4mCargar y mostrar una mtariz\E[00m pulse \E[0;1m1\E[00m \E[46m \E[00m\E[40m \E[00m";
cout<<"\n \t\E[46m \E[00m \E[0;4mMultiplicacion de matrices\E[00m pulse \E[0;1m2\E[00m \E[46m \E[00m\E[40m \E[00m";
cout<<"\n \t\E[46m \E[00m Para \E[0;4mSalir\E[00m pulse \E[0;1m4\E[00m \E[46m \E[00m\E[40m \E[00m";
cout<<"\n \t\E[46m \E[00m\E[40m \E[00m";
cout<<"\n \t \E[40m \E[00m\n";
cin>>op;
switch(op)
{
case 1:
{
cout << "Numero de filas: ";
cin >> f;
cout << "Numero de Columnas: ";
cin >> c;
matriz= inicializar_matriz(f, c);
leer_matriz(matriz, f, c);
escribir_matriz(matriz, f, c);
eliminar_matriz(matriz, f, c);
}
break;
case 2:{
cout<<"Numero de filas: ";
cin>> f;
cout<<"Numero de colomnas: ";
cin>> c;
matriz= inicializar_matriz(f, c);
matriz1= inicializar_matriz(c, f);
leer_matriz(matriz, f, c);
cout<<" Ahora la matriz 2: \n";
leer_matriz(matriz1, c, f);
/*cout<<"MATRIZ 1\n";
//escribir_matriz(matriz, f, c);
cout<<"MATRIZ 2\n";
//escribir_matriz(matriz1, c, f);*/
multiplicacion(matriz, f, c, matriz1, c, f, matriz2, f1, c1);
cout<<f1 <<" ";
cout<<c1;
int i=0,j=0;
cout << *(*(matriz2+i)+j) << " ";//ERROR CREO Q ESTA ACA
/*for(i=0;i<f1;i++){
for(j=0;j<c1;j++){
cout << *(*(matriz2+i)+j) << " ";
}
cout << endl;
}*/
//escribir_matriz(matriz2, c1, f1);
}
}//switch general
system("clear");
} //cierro do principal que trabaja con numeros
while(op!=4);
}