Input:
- Code: Select all
5 5
*****
*...*
*.*.*
*...*
*****
4 4
*.*.
.***
**..
.*.*
0 0
Output:
- Code: Select all
Field #1:
*****
*646*
*4*4*
*646*
*****
Field #2:
*4*3
4***
**63
3*3*
Hope these help.
Moderator: Board moderators
5 5
*****
*...*
*.*.*
*...*
*****
4 4
*.*.
.***
**..
.*.*
0 0Field #1:
*****
*646*
*4*4*
*646*
*****
Field #2:
*4*3
4***
**63
3*3*code removed after AC
if((a[i+1][j-1]=='*')&& i+1< m && j-1>= 0 )if(j-1>= 0 && i+1<m && (a[i+1][j-1]=='*'))count = valid(i,j+1) + valid(i+1,j) + valid(i,j-1) + ...Removed After AC.There must be an empty line between field outputs
#include <cstdio>
#define MAX 110
#define FIN "Mine.in"
#define FOU "Mine.ou"
#define DEBUG 0
int a[MAX][MAX],b[MAX][MAX];
int m,n;
int main()
{
if (DEBUG)
{
freopen(FIN,"r",stdin);
freopen(FOU,"w",stdout);
}
int count=0;
char c;
while (1)
{
scanf("%d%d",&m,&n);
if (!m&&!n) break;
if (count) printf("\n\n");
count++;
for (int i=0;i<=m+1;i++)
for (int j=0;j<=n+1;j++)
{
a[i][j]=0;
b[i][j]=0;
}
for (int i=1;i<=m;i++)
{
for (int j=1;j<=n;j++)
{
do
scanf("%c",&c);
while ((c!='*')&&(c!='.'));
a[i][j] = (c=='*');
}
}
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
if (!a[i][j]) 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];
printf("Field #%d:\n",count);
for (int i=1;i<=m;i++)
{
for (int j=1;j<=n;j++)
if (!a[i][j]) printf("%d",b[i][j]);
else printf("*");
if (i!=m) printf("\n");
}
}
if (DEBUG)
{
fclose(stdin);
fclose(stdout);
}
return 0;
}
Removed.
Thanks Jan.
#include <stdio.h>
#include <stdlib.h>
int main(){
int mineField[105][105];
int m, n, i, j, size, cont, campo=1, flag=1;
char field;
while ( scanf("%d %d", &m, &n) == 2 && m != 0 && n !=0){
size = m*n;
for ( i=0; i < m; i++){
for(j=0; j < n; j++ )mineField[i][j]=0;
}
cont=0;
i=0;
j=0;
while ( i < m && j < n ){
scanf("%c",&field);
if ( field=='*' || field=='.'){
j = cont%n;
if ( field == '*' ){
mineField[i][j]=-10;
if ( i != 0){
mineField[i-1][j]++;
if( j != 0 )mineField[i-1][j-1]++;
if( j != n-1)mineField[i-1][j+1]++;
}
if ( i != m-1){
mineField[i+1][j]++;
if(j != 0)mineField[i+1][j-1]++;
if(j != n-1)mineField[i+1][j+1]++;
}
if ( j != 0 )mineField[i][j-1]++;
if ( j != n-1)mineField[i][j+1]++;
}
if ( j == n-1) i++;
cont++;
}
}
if(flag != 1){ printf("\n\n");}else flag=0;
printf("Field #%d:\n",campo);
for (i=0;i<m;i++){
for(j=0;j<n;j++){
if( mineField[i][j] < 0 )printf("*");else
printf("%d",mineField[i][j]);
}
if(i != m-1) printf("\n");
}
campo++;
}
return 0;
}
scanf(" %c",&field); // note that there is a space before %c#include<iostream>
using namespace std;
int check(int i, int j, int x, int y, char b[][100]);
void main(void)
{
int i,j,k=0,m,n,z;
char a[100][100];
while(1)
{
cin >> m >> n;
if(m==0&&n==0)
break;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin >> a[i][j];
k++;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(a[i][j]!='*')
{
z=check(i,j,m-1,n-1,a);
a[i][j]=z;
}
cout << "Field #" << k << ":\n";
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
cout << a[i][j];
cout << "\n";
}
cout << "\n";
}
}
int check(int i, int j, int x, int y, char b[][100])
{
int k=i-1,l=i+1,m=j-1,n=j+1,p=0,q,w;
char a[100][100];
for(q=0;q<=x;q++)
for(w=0;w<=y;w++)
a[q][w]=b[q][w];
if(i==0)
k=0;
if(i==x)
l=i;
if(j==0)
m=0;
if(j==y)
n=j;
if(a[k][m]=='*')
{
a[k][m]=-1;
p++;
}
if(a[i][m]=='*')
{
a[i][m]=-1;
p++;
}
if(a[l][m]=='*')
{
a[l][m]=-1;
p++;
}
if(a[k][j]=='*')
{
a[k][j]=-1;
p++;
}
if(a[l][j]=='*')
{
a[l][j]=-1;
p++;
}
if(a[k][n]=='*')
{
a[k][n]=-1;
p++;
}
if(a[i][n]=='*')
{
a[i][n]=-1;
p++;
}
if(a[l][n]=='*')
{
a[l][n]=-1;
p++;
}
return (p+48);
}Users browsing this forum: Google [Bot] and 1 guest