Anyway, here is the code.
Thank you very much for your time.
- Code: Select all
#include <stdio.h>
#include <stdlib.h>
int adjecant_mines(int i, int j, int upper, int lower);
char grid[1000][1000];
void print_grid(int n, int m);
void mark_grid(int n, int m);
void reset_grid(void);
int main(void)
{
int n,m,i,j,field = 1;
while(scanf("%d %d",&n,&m)!=EOF){
getchar();
if((n==0)&&(m==0))
break;
reset_grid();
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%c",&grid[i][j]);
}
getchar();
}
printf("Field #%d:\n",field);
mark_grid(n,m);
print_grid(n,m);
field++;
}
return 0;
}
int adjecant_mines(int i, int j, int upper, int lower)
{
int res = 0;
int n,m,t1,t2;
for(n=-1;n<=1;n++)
{
for(m=-1;m<=1;m++)
{
t1 = i + n;
t2 = j + m;
if(grid[t1][t1]=='*' && t1 > -1 && t2 > -1 && t1 < upper && t2 < lower)
res ++ ;
}
}
return res;
}
void print_grid(int n, int m)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%c",grid[i][j]);
}
printf("\n");
}
}
void mark_grid(int n, int m) //Mark the grid so that each field gets the value of adjecant mines around it.
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(grid[i][j]=='.')
grid[i][j] = (char)((int)'0' + adjecant_mines(i,j,n,m));
}
}
}
void reset_grid(void)
{
int i,j;
for(i=0;i<1000;i++)
{
for(j=0;j<1000;j++)
{
grid[i][j] = '.';
}
}
}
