C/C++

8.1 Урок №32. Двумерные массивы

Дано поле 10x10 для игры в "Сапёр". Поле заполнено нулями. В некоторых клетках стоят девятки -- мины.
Напишите программу, которая в каждой, не занятой миной клетке, пишет число от 0 до 8 -- количество мин, которые расположены в смежных клетках.



Sample Input 1:

0 0 0 0 9 9 0 0 0 0
0 0 0 0 0 9 0 0 0 0
0 0 0 0 0 0 0 9 0 0
0 0 0 0 0 0 0 9 0 0
0 0 0 9 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 9 0 9
0 0 0 0 0 0 0 0 0 0
9 0 0 0 9 0 0 0 0 0
0 0 0 0 0 0 0 0 9 0

Sample Output 1:

0 0 0 1 9 9 2 0 0 0
0 0 0 1 3 9 3 1 1 0
0 0 0 0 1 1 3 9 2 0
0 0 1 1 1 0 2 9 2 0
0 0 1 9 1 0 1 1 1 0
0 0 1 1 1 0 1 1 2 1
0 0 0 0 0 0 1 9 2 9
1 1 0 1 1 1 1 1 2 1
9 1 0 1 9 1 0 1 1 1
1 1 0 1 1 1 0 1 9 1

Sample Input 2:

0 0 0 0 0 0 0 0 0 0
0 0 0 9 9 9 0 0 0 0
0 0 0 9 9 9 0 0 0 0
0 0 0 9 9 9 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 9 9 9 9 9 0 0
0 0 0 0 0 0 0 0 0 0
9 9 9 0 0 0 0 0 0 0
9 0 9 0 0 0 0 0 0 0
9 9 9 0 0 0 0 0 0 9

Sample Output 2:

0 0 1 2 3 2 1 0 0 0
0 0 2 9 9 9 2 0 0 0
0 0 3 9 9 9 3 0 0 0
0 0 2 9 9 9 2 0 0 0
0 0 2 4 6 5 4 2 1 0
0 0 1 9 9 9 9 9 1 0
2 3 3 3 3 3 3 2 1 0
9 9 9 2 0 0 0 0 0 0
9 8 9 3 0 0 0 0 1 1
9 9 9 2 0 0 0 0 1 9
 #include  
#include
#include

#define FIELD_WIDTH 10
#define FIELD_HEIGHT 10

#define MINE 9

#define is_valid(x, y) \
(x >= 0 && x < FIELD_WIDTH && \
y >= 0 && y < FIELD_HEIGHT)

typedef int field_t[FIELD_WIDTH][FIELD_HEIGHT];

void field_input_bombs(field_t field)
{
for (int x = 0; x < FIELD_WIDTH; x++) {
for (int y = 0; y < FIELD_HEIGHT; y++)
scanf("%d", &field[x][y]);
}
}

void field_print(const field_t field)
{
for (int x = 0; x < FIELD_WIDTH; x++) {
for (int y = 0; y < FIELD_HEIGHT; y++) {
if (!is_valid(x, y)) continue;

printf("%d ", field[x][y]);
}

putchar('\n');
}
}

size_t field_get_adjacent_mines(const field_t field,
int cell_x,
int cell_y)
{
size_t mines_count = 0;

for (int off_x = -1; off_x
СР
Степан Рудых
1 893
Лучший ответ
 // это будет устанавливать в массив A[10][10] где i - строка, j - столбец   
for(int i=0; i 0 && A[i-1][j-1] == 9 )
||
( A[i-1][j] == 9 )
||
(j < 9 && A[i-1][j+1] == 9 )
)
n++;
}

if( j > 0 && A[i][j-1] == 9 ) n++;
if( j < 9 && A[i][j+1] == 9 ) n++;

if( i < 9 )
{
if(
(j > 0 && A[i+1][j-1] == 9 )
||
( A[i+1][j] == 9 )
||
(j < 9 && A[i+1][j+1] == 9 )
)
n++;
}

A[i][j] = n;
}
}
Петя Горюнов
Петя Горюнов
78 418
Виталий Ворожейкин Это какой язык программирования ?