Дано поле 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
C/C++
8.1 Урок №32. Двумерные массивы
#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
// это будет устанавливать в массив 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;
}
}
Виталий Ворожейкин
Это какой язык программирования ?
Виталий Ворожейкин
На C++ надо
Похожие вопросы
- Двумерные массивы C++, ничего не понимаю((( Нужна помощь
- Запись и чтение двумерного массива в бинарный файл
- Двумерный массив C++
- Задача.Программирование.С++.Динамический двумерный массив.
- Ввести двумерный массив A(n x m)
- Создать и вывести двумерный массив через функции
- Указатель превращается в двумерный массив. (Си)
- Заполнить двумерный массив 5*3 и найти строку с максимальным произведением элементов. C++
- Отразить двумерный массив с размером m x n относительно побочной диагонали
- C++ программирование с использованием динамических двумерных массивов