#include <stdio.h>
void allocMatrix(int ***matrix, int fil, int col);
void deallocMatrix(int **matrix, int fil);
void leerMatriz(int **matriz, int fil, int col);
void sumarMatrices(int **matrizA, int **matrizB, int fil, int col);
int main()
{
int fil, col;
printf("\nFilas de la matriz: ");
scanf("%d", &fil);
printf("Columnas de la matriz: ");
scanf("%d", &col);
int **matrizA = NULL;
allocMatrix(&matrizA, fil, col);
int **matrizB = NULL;
allocMatrix(&matrizB, fil, col);
printf("\nDatos de la matriz A:\n");
leerMatriz(matrizA, fil, col);
printf("\nDatos de la matriz B:\n");
leerMatriz(matrizB, fil, col);
sumarMatrices(matrizA, matrizB, fil, col);
deallocMatrix(matrizA, fil);
deallocMatrix(matrizB, fil);
return 0;
}
void allocMatrix(int ***matrix, int fil, int col)
{
*matrix = (int **)malloc(sizeof(int *) * fil);
for (int i = 0; i < col; i++)
*(*matrix + i) = (int *)malloc(sizeof(int) * col);
}
void deallocMatrix(int **matrix, int fil)
{
for (int i = 0; i < fil; i++)
free(matrix[i]);
free(matrix);
}
void leerMatriz(int **matriz, int fil, int col)
{
for (int i = 0; i < fil; i++)
{
printf("Fila %d:\n", i + 1);
for (int j = 0; j < col; j++)
{
printf("Columna %d: ", j + 1);
scanf("%d", &matriz[i][j]);
}
}
}
void sumarMatrices(int **matrizA, int **matrizB, int fil, int col)
{
printf("\nResultado A + B:\n\n");
for (int i = 0; i < fil; i++)
{
printf(" | ");
for (int j = 0; j < col; j++)
{
printf("%d ", matrizA[i][j] + matrizB[i][j]);
}
printf(" |\n");
}
}