#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"); }
}