
Ходы ферзя На шахматной доске стоит ферзь. Отметьте положение ферзя на доске и все клетки,
которые он бьет. Клетку, где стоит ферзь, отметьте буквой “Q”, клетки, которые бьет ферзь, отметьте символами “*”, остальные клетки заполните точками. Входные данные Программа получает на вход два числа — координаты ферзя на шахматной доске. Каждая координата вводится на отдельной строке. Первое число обозначает номер строки, а второе — номер столбца. Все числа принимают значения от 1 до 8. Выходные данные Выведите на экран изображение доски. Примеры Ввод Вывод 2 5 . . . * * * . . * * * * Q * * * . . . * * * . . . . * . * . * . . * . . * . . * * . . . * . . . . . . . * . . . . . . . * . . . Решите задачу на C++ или Python!!

Ответы на вопрос

Ответ:
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a[8][8];
long long x, y, i, j;
cin >> y >> x;
for(i = 0; i < 8; i++){
for(j = 0; j < 8; j++){
a[i][j] = '.';
}
}
x--;
y--;
if(x - y >= 0){
i = 0;
j = x - y;
}
else{
j = 0;
i = y - x;
}
for(;i < 8 and j < 8;){
a[i][j] = '*';
i++;
j++;
}
if(x + y <= 7){
i = 0;
j = x + y;
}
else{
j = 7;
i = x + y - 7;
}
for(;i < 8 and j >= 0;){
a[i][j] = '*';
i++;
j--;
}
i = 0;
j = x;
for(;i < 8; i++){
a[i][j] = '*';
}
i = y;
j = 0;
for(;j < 8; j++){
a[i][j] = '*';
}
a[y][x] ='Q';
for(i = 0; i < 8; i++){
for(j = 0; j < 8; j++){
cout << a[i][j] << " ";
}
cout << '\n';
}
return 0;
}
Объяснение:



Для решения этой задачи на C++ или Python, вам нужно будет создать двумерный массив и заполнить его символами согласно условиям задачи. Вот пример решения на обоих языках:
Решение на C++:
cpp#include <iostream>
using namespace std;
int main() {
int board[8][8] = {0}; // Создаем доску размером 8x8 и заполняем нулями
int row, col;
cin >> row >> col;
// Заполняем клетки, которые ферзь бьет символом '*'
for (int i = 0; i < 8; ++i) {
board[row - 1][i] = 1; // горизонталь
board[i][col - 1] = 1; // вертикаль
if (row - 1 + i < 8 && col - 1 + i < 8)
board[row - 1 + i][col - 1 + i] = 1; // диагональ вправо-вниз
if (row - 1 - i >= 0 && col - 1 + i < 8)
board[row - 1 - i][col - 1 + i] = 1; // диагональ вправо-вверх
if (row - 1 + i < 8 && col - 1 - i >= 0)
board[row - 1 + i][col - 1 - i] = 1; // диагональ влево-вниз
if (row - 1 - i >= 0 && col - 1 - i >= 0)
board[row - 1 - i][col - 1 - i] = 1; // диагональ влево-вверх
}
// Выводим доску на экран
for (int i = 0; i < 8; ++i) {
for (int j = 0; j < 8; ++j) {
if (i == row - 1 && j == col - 1)
cout << "Q ";
else if (board[i][j] == 1)
cout << "* ";
else
cout << ". ";
}
cout << endl;
}
return 0;
}
Решение на Python:
pythondef print_board(board, row, col):
for i in range(8):
for j in range(8):
if i == row - 1 and j == col - 1:
print("Q ", end="")
elif board[i][j] == 1:
print("* ", end="")
else:
print(". ", end="")
print()
def main():
board = [[0 for _ in range(8)] for _ in range(8)] # Создаем доску размером 8x8 и заполняем нулями
row = int(input())
col = int(input())
# Заполняем клетки, которые ферзь бьет символом '*'
for i in range(8):
board[row - 1][i] = 1 # горизонталь
board[i][col - 1] = 1 # вертикаль
if row - 1 + i < 8 and col - 1 + i < 8:
board[row - 1 + i][col - 1 + i] = 1 # диагональ вправо-вниз
if row - 1 - i >= 0 and col - 1 + i < 8:
board[row - 1 - i][col - 1 + i] = 1 # диагональ вправо-вверх
if row - 1 + i < 8 and col - 1 - i >= 0:
board[row - 1 + i][col - 1 - i] = 1 # диагональ влево-вниз
if row - 1 - i >= 0 and col - 1 - i >= 0:
board[row - 1 - i][col - 1 - i] = 1 # диагональ влево-вверх
# Выводим доску на экран
print_board(board, row, col)
if __name__ == "__main__":
main()
Оба примера решения считывают координаты ферзя, заполняют доску и выводят ее на экран с соответствующими символами.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili