Преподавателя не устроил мой иррациональный вариант и нужно сделать его компактнее
мой код:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
const int N=3, M=4;
int A[N][M]={{1,1,1,1},{1,1,1,1}, {1,1,1,1}}, B[N][M];
for (int i=0;i<N;i++) for (int j=0;j<M;j++) {
if (i==0 && j==0) B[i][j]=(A[0][1]+A[1][0]+A[1][1])/3;
else if (i==N-1 && j==0) B[i][j]=(A[N-1][0]+A[N-1][1]+A[N][1])/3;
else if (i==0 && j==M-1) B[i][j]=(A[0][M-1]+A[1][M-1]+A[1][M])/3;
else if (i==N-1 && j==M-1) B[i][j]=(A[N-2][M-2]+A[N-2][M-1]+A[N-1][M-2])/3;
else if (i==0 && j>0 && j<M-1) B[i][j]=(A[0][j-1]+A[0][j+1]+A[1][j-1] + A[1][j] + A[1][j+1])/5;
else if (i==N-1 && j>0 && j<M-1) B[i][j]=(A[N-1][j-1]+A[N-1][j+1]+A[N-2][j-1] + A[N-2][j] + A[N-2][j+1])/5;
else if (i>0 && i<N-1 && j==0) B[i][j]=(A[i-1][0]+A[i+1][0]+A[i-1][1] + A[i][1] + A[j+1][1])/5;
else if (i>0 && i<N-1 && j==M-1) B[i][j]=(A[i-1][M-1]+A[i+1][M-1]+A[i-1][M-2] + A[i][M-2] + A[i+1][M-2])/5;
else B[i][j] = (A[i-1][j-1] + A[i-1][j] + A[i-1][j+1] +A[i][j-1] + A[i][j+1] + A[i+1][j-1] + A[i+1][j] + A[i+1][j+1])/8;
}
for (int i=0;i<N;i++) {for (int j=0;j<M;j++) cout « B[i][j] « " "; cout « endl;}
}