#include <stdlib.h>
#include <stdio.h>
#define MAXCOL 30
/*Sumar 2 tablas de numeros*/
main(){
int nfilas,ncols;
/*Definiciones de punteros*/
int (*a)[MAXCOL], (*b)[MAXCOL], (*c)[MAXCOL];
/*Prototipos de funcion*/
void leerentrada(int (*a)[MAXCOL],int nfilas, int ncols);
void calcularsuma(int (*a)[MAXCOL],int (*b)[MAXCOL],int (*c)[MAXCOL],int nfilas,int ncols);
void sacarsalida(int (*c)[MAXCOL],int nfilas,int ncols);
/*Pedir los datos*/
printf("Cuantas filas? n");
scanf("%d",&nfilas);
printf("Cuantas columnas? ");
scanf("%d",&ncols);
/*Reserva de memoria inicial*/
*a[MAXCOL]=(int *) malloc(nfilas * ncols * sizeof(int));
*b[MAXCOL]=(int *) malloc(nfilas * ncols * sizeof(int));
*c[MAXCOL]=(int *) malloc(nfilas * ncols * sizeof(int));
/*Leer las tablas*/
printf("Primera tabla: n");
leerentrada(a,nfilas,ncols);
printf("Segunda tabla: n");
leerentrada(b,nfilas,ncols);
/*Calcular la suma*/
calcularsuma(a,b,c,nfilas,ncols);
/*Desplegar la salida*/
printf("La tabla resultante es:n ");
sacarsalida(c,nfilas,ncols);
}
void leerentrada(int (*a)[MAXCOL],int n, int m){
int i,j;
printf("%d %d",n,m);
for (i=0;i<n;++i){
printf("nIntroducir datos para la fila nº %2dn",i+1);
for (j=0;j<m;++j){
// printf("Ingrese el elemento nº (%d,%d) de la tabla:n",i,j);
scanf("%d",(*(a+i)+j));
}
}
return;
}
void calcularsuma(int (*a)[MAXCOL],int (*b)[MAXCOL],int (*c)[MAXCOL],int n,int m){
int i,j;
for (i=0;i<n;++i){
for (j=0;j<m;++j){
*(*(c+i)+j)= *(*(a+i)+j) + *(*(b+i)+j);
}
}
return;
}
void sacarsalida(int (*c)[MAXCOL],int n,int m){
int i,j;
for (i=0;i<n;++i){
for (j=0;j<m;++j){
printf("%4d",(*(*(c+i)+j)));
}
}
return;
}