#include<iostream.h>
#include<iomanip.h>
#include<time.h>
#include<stdlib.h>

#define MAX	5

int val_aleatorio(int , int );
void  preencher_matriz(int mat[][MAX]);
void  listar_matriz(int mat[][MAX]);
void filtrar_matriz(int mat[][MAX],int mat1[][MAX]);

void main()
{
	
	int matriz[MAX][MAX];
	int matriz1[MAX][MAX];
	
	/*Nao era necessário*/
	srand(time(NULL));
	preencher_matriz(matriz);
	/*Nao era necessário*/
	listar_matriz(matriz);

	filtrar_matriz(matriz,matriz1);
	
	/*Nao era necessário*/
	listar_matriz(matriz1);
}
/*Nao era necessário*/
int val_aleatorio(int min, int max)
{
	return (min+(1.0 * rand()/RAND_MAX)*(max-min));
}
/*Nao era necessário*/
void  preencher_matriz(int mat[][MAX])
{
	for(int i=0;i<MAX;i++)
		for(int j=0;j<MAX;j++)
			mat[i][j]=val_aleatorio(50, 500);
}
/*Nao era necessário*/
void  listar_matriz(int mat[][MAX])
{
	cout<<"\nMatriz\n";
	for(int i=0;i<MAX;i++){
		for(int j=0;j<MAX;j++){
			cout<<setw(5)<<mat[i][j];
		}
		cout<<endl;
	}
}

void  filtrar_matriz(int mat[][MAX],int mat1[][MAX])
{
	for(int i=0;i<MAX;i++){
		for(int j=0;j<MAX;j++){
			if(i==0 || i== MAX-1 || j==0 || j==MAX-1){
				mat1[i][j]=mat[i][j];
			}
			else{
				mat1[i][j]=(
/*Coluna anterior*/	mat[i-1][j-1] + mat[i][j-1]+ mat[i+1][j-1] + 
/*Coluna corrente*/	mat[i-1][j] + mat[i+1][j] + 
/*Coluna posterior*/mat[i-1][j+1] + mat[i][j+1] + mat[i+1][j+1]
					)/8;
			}				
		}
	}
}