#include <iostream>
using namespace std;
void leer(int **&m, int &fil, int &col);
void sumar(int **a, int afil, int acol, int **b, int bfil, int bcol);
void transpuesta(int **m, int fil, int col);
void imprimir(int **m, int fil, int col);
int main()
{
int **a;
int **b;
int afil, acol, bfil, bcol;
cout << endl << "Matriz A: " << endl << endl;
leer(a, afil, acol);
cout << endl << "Matriz B: " << endl << endl;
leer(b, bfil, bcol);
sumar(a, afil, acol, b, bfil, bcol);
return 0;
}
void leer(int **&m, int &fil, int &col)
{
do {
cout << "Numero de Filas: "; cin >> fil;
cout << "Numero de Columnas: "; cin >> col;
if (fil < 0 || fil > 5 || col < 0 || col > 5)
cout << endl << "NO VALIDO. EXCEDE EL TAMANIO 5x5" << endl << endl;
} while (fil < 0 || fil > 5 || col < 0 || col > 5);
m = new int*[fil];
for (int i = 0; i < fil; i++)
m[i] = new int[col];
for (int i = 0; i < fil; i++)
{
for (int j = 0; j < col; j++)
{
cout << "[" << i << "][" << j << "]: ";
cin >> m[i][j];
}
cout << endl;
}
}
void sumar(int **a, int afil, int acol, int **b, int bfil, int bcol)
{
cout << endl << "Matriz A: " << endl;
imprimir(a, afil, acol);
cout << endl << "Matriz B: " << endl;
imprimir(b, bfil, bcol);
if (afil != bfil || acol != bcol)
{
cout << endl << "Las Dimensiones de las Matrices NO Coinciden" << endl << endl;
cout << endl << "Matriz A Transpuesta: " << endl;
transpuesta(a, afil, acol);
cout << endl << "Matriz B Transpuesta: " << endl;
transpuesta(b, bfil, bcol);
return;
}
cout << endl << "Suma de A + B: " << endl;
for (int i = 0; i < afil; i++)
{
for (int j = 0; j < acol; j++)
{
cout << a[i][j] + b[i][j] << " ";
}
cout << endl;
}
}
void transpuesta(int **m, int fil, int col)
{
int **c = new int*[col];
for (int i = 0; i < col; i++)
c[i] = new int[fil];
for (int i = 0; i < fil; i++)
for (int j = 0; j < col; j++)
c[j][i] = m[i][j];
imprimir(c, col, fil);
}
void imprimir(int **m, int fil, int col)
{
for (int i = 0; i < fil; i++)
{
for (int j = 0; j < col; j++)
{
cout << m[i][j] << " ";
}
cout << endl;
}
}