Вопрос задан 12.07.2023 в 20:26. Предмет Информатика. Спрашивает Быков Артем.

Ходы ферзя На шахматной доске стоит ферзь. Отметьте положение ферзя на доске и все клетки,

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Галиев Ранис.

Ответ:

#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;

}

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи на 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:

python
def 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()

Оба примера решения считывают координаты ферзя, заполняют доску и выводят ее на экран с соответствующими символами.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос