Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача "Морской бой"

Олеся Феоктистова Ученик (102), на голосовании 1 неделю назад
Дано поле Морского боя (10×10). Ячейка обозначается:

0, если там ничего нет;
1, если там находится корабль;
2, если там находится разбитый корабль.
Производится выстрел по координатам (x, y). Если выстрел попал в корабль (там, где стоит 1), то палуба этого корабля становится разбитой. Выведите на экран изменённое поле.

Формат входных данных
С клавиатуры вводятся 10 строк по 10 элементов через пробел (0, 1 или 2) — поле морского боя.

В следующей строке натуральные числа x и y — координаты удара через пробел. Первое число — номер строки, второе число — номер столбца. Нумерация начинается с 1.

Формат выходных данных
Необxодимо вывести изменённое поле из 10 строк по 10 элементов.

Примеры
ВХОДНЫЕ ДАННЫЕ
0 0 0 0 0 0 0 0 0 0
0 1 1 2 1 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 0 1 1 0 0
1 0 0 0 0 0 0 0 0 1
0 0 1 0 1 0 1 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
2 2
ВЫХОДНЫЕ ДАННЫЕ
0 0 0 0 0 0 0 0 0 0
0 2 1 2 1 0 0 1 1 1
0 0 0 0 0 0 0 0 0 0
1 0 1 1 1 0 1 1 0 0
1 0 0 0 0 0 0 0 0 1
0 0 1 0 1 0 1 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
Голосование за лучший ответ
Беспрекословный Эксперт Мыслитель (5795) 1 месяц назад
Чтобы выполнить задачу по Морскому бою в C++, вы можете создать двумерный массив для хранения состояния игрового поля и обновить его, когда пользователь введет координаты выстрела. Вот пример кода, который делает это:
 #include  
#include

using namespace std;

int main() {
vector> field(10, vector(10)); // Создание поля 10x10
int x, y;

// Заполнение поля значениями, введенными пользователем
for (int i = 0; i < 10; ++i) {
for (int j = 0; j < 10; ++j) {
cin >> field[i][j];
}
}

// Ввод координат выстрела
cin >> x >> y;
--x; // Уменьшаем x и y на 1, так как нумерация начинается с 1
--y;

// Проверяем, есть ли корабль в данной ячейке
if (field[x][y] == 1) {
field[x][y] = 2; // Обновляем ячейку как попадание
}

// Вывод обновленного поля
for (int i = 0; i < 10; ++i) {
for (int j = 0; j < 10; ++j) {
cout << field[i][j] << " ";
}
cout << endl;
}

return 0;
}
Чтобы запустить эту программу, введите значения для всего поля Морского боя, затем введите координаты выстрела, и программа обновит поле и выведет его на экран.
Похожие вопросы