У меня есть некоторые проблемы с набором типов

Я работаю в университетском проекте, в котором я должен написать игру для минного пулемета с некоторым массивом... я написал свою программу, программа напечатает таблицу минного пера, в какой-то ячейке таблицы есть бомба, которую должна напечатать программа * в этой камере. а в другой ячейке должно быть напечатано число бомб в восьми окружающих ячейках. Я не знаю, как напечатать этот двойной подпрограммный массив, который может печатать как символ, так и число.

#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, и более поздние проходы не увидят '*' там. Так что в основном ваши счета будут испорчены. Вам нужен один массив для '*' и другой для подсчета соседей.

Другие вопросы по тегам