Code:
#include<bits/stdc++.h>
using namespace std;
#define MAXN 105
int arr[MAXN][MAXN];
char mp[MAXN][MAXN];
int dict[8][2] = {
{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
void input_data(int n,int m)
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin>>mp[i][j];
}
}
return ;
}
int produce(int x,int y,int n,int m)
{
if(mp[x][y] == '*')
{
arr[x][y] = -1;
return 0;
}
int xx,yy;
int cnt = 0;
for(int i=0; i<8; i++)
{
xx = x + dict[i][0];
yy = y + dict[i][1];
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&mp[xx][yy]=='*')
{
cnt++;
}
}
arr[x][y] = cnt;
return 0;
}
int out_data(int n,int m)
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
if(arr[i][j] == -1)
{
cout<<"*";
}else
{
cout<<arr[i][j];
}
}
cout<<endl;
}
return 0;
}
int main()
{
int n,m;
cin>>n>>m;
input_data(n,m);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
produce(i,j,n,m);
}
}
out_data(n,m);
return 0;
}