La Web del Programador: Comunidad de Programadores
 
    Pregunta:  55688 - SUMA DE ELEMENTOS DE UNA MATRIZ
Autor:  italo rueda
si yo tengo una matriz cuadrada o rectangular como puedo hacer para que me sume los elementos adyacente de un elemento de la matriz y que asigne dicho valor en la posicion del elemento y obtener una matriz del mismo tamaƱo
matriz original - matriz resultante
2 1 4 5 - 13 21 26 16
4 8 3 9 - 24 29 40 18
6 7 2 4 - 19 23 31 14

  Respuesta:  Alvaro Salvatierra S.
Hola:
Una forma es agregar filas y columnas con ceros en los bordes de la matriz original. Cada elemento de la matriz buscada se obtiene sumando los 8 elementos adyacentes en la matriz aumentada.

Este es el listado en C:
int main(int argc, char* argv[])

{
int a[6][6],b[5][5];
int i,j,n=5;

for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{
if(i==0 || j==0 || i==n || j==n)
a[i][j]= 0;
else
a[i][j]= 2*i+3*(n-j);
}

for(i=1;i for(j=1;j b[i][j]= a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1]+a[i-1][j-1]+a[i-1][j+1]+a[i+1][j-1]
+a[i+1][j+1];

for(i=0;i<=n;i++)
printf(" %3d %3d %3d %3d %3d %3d
",a[i][0],a[i][1],a[i][2],a[i][3],
a[i][4],a[i][5]);

printf("

");

for(i=1;i printf(" %3d %3d %3d %3d
",a[i][1],a[i][2],a[i][3],a[i][4]);

printf("

");

for(i=1;i printf(" %3d %3d %3d %3d
",b[i][1],b[i][2],b[i][3],b[i][4]);

return 0;
}

Slds