У меня есть некоторые проблемы с набором типов
Я работаю в университетском проекте, в котором я должен написать игру для минного пулемета с некоторым массивом... я написал свою программу, программа напечатает таблицу минного пера, в какой-то ячейке таблицы есть бомба, которую должна напечатать программа *
в этой камере. а в другой ячейке должно быть напечатано число бомб в восьми окружающих ячейках. Я не знаю, как напечатать этот двойной подпрограммный массив, который может печатать как символ, так и число.
#include <stdio.h>
#define max 100
int main()
{
int a,row,column,n,x,y,counter,i,j;
char table[max][max]={0};
scanf("%d%d",&row,&column);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
table[x-1][y-1]='*';
}
for(counter=0,i=0;i<row;i++)
{
for(j=0;j<column;j++)
{
if(table[i-1][j-1]=='*')
counter++;
if(table[i-1][j]=='*')
counter++;
if(table[i-1][j+1]=='*')
counter++;
if(table[i][j-1]=='*')
counter++;
if(table[i][j+1]=='*')
counter++;
if(table[i+1][j-1]=='*')
counter++;
if(table[i+1][j]=='*')
counter++;
if(table[i+1][j+1]=='*')
counter++;
if(table[i][j]!='*')
table[i][j]=counter;
counter=0;
}
}
for(counter=0,i=0;i<row;i++)
{
for(j=0;j<column;j++)
printf("%d ",(char)table[i][j]);
printf("\n");
}
}
1 ответ
Не ответ, но ваш код не будет работать, потому что
if(table[i][j]!='*')
table[i][j]=counter;
^^^^^^^^^^^^^^^
Перезапишет то, что находится в местоположении в i,j, и более поздние проходы не увидят '*' там. Так что в основном ваши счета будут испорчены. Вам нужен один массив для '*' и другой для подсчета соседей.