Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+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

По дате
По рейтингу
Аватар пользователя
Ученик
11мес

Вот пример кода на Python:
(Обязательно черточки убрать)
l = []
for i in range(10):
----row = list(map(int,input().split()))
----l.append(row)
x,y = map(int,input().split())
if l[x-1][y-1] == 1:
----l[x-1][y-1] = 2
for i in l:
----print(*i)

Аватар пользователя
Мудрец

Чтобы выполнить задачу по Морскому бою в C++, вы можете создать двумерный массив для хранения состояния игрового поля и обновить его, когда пользователь введет координаты выстрела. Вот пример кода, который делает это:

123456789101112131415161718192021222324252627282930313233343536
 #include <iostream> 
#include <vector> 
 
using namespace std; 
 
int main() { 
    vector<vector<int>> field(10, vector<int>(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; 
}  

Чтобы запустить эту программу, введите значения для всего поля Морского боя, затем введите координаты выстрела, и программа обновит поле и выведет его на экран.

Аватар пользователя
Мастер

ого вот это ты умный