קוד:
#include <stdio.h>
#include <conio.h>
#define Ax 4
#define Ay 4
int A[Ay][Ax] = {{4,3,2,1}, {8,7,6,5},{4,3,2,1}, {8,7,6,5}};
int B[Ay][Ax];
int mask[3][3] = {{0,1,0}, {1,1,1}, {0,1,0}};
void init(){
for (int i=0; i<Ay; i++)
for (int j=0; j<Ax; j++)
B[i][j]=0;
}
void Generate(){
for (int i=0; i<Ay; i++)
for (int j=0; j<Ax; j++)
for (int k=0; k<9; k++)
if (i+k%3-1>=0 && j+int(k/3)-1>=0 && j+int(k/3)-1<Ay && i+k%3-1<Ax)
B[i][j]+=(A[i+k%3-1][j+int(k/3)-1])*mask[k%3][k/3];
}
int main(){
init();
Generate();
for (int i=0; i<Ay; i++){
printf("\n");
for (int j=0; j<Ax; j++)
printf("%4d", B[i][j]);
}
getch();
}