
С++ Ходы ферзя На шахматной доске стоит ферзь. Отметьте положение ферзя на доске и все клетки,
которые бьет ферзь. Клетку, где стоит ферзь, отметьте буквой "Q", клетки, которые бьет ферзь, отметьте символами "*", остальные клетки заполните точками. Входные данные В двух строках входного файла заданы два числа — координаты нахождения ферзя. Числа во входном файле натуральные, не превосходящие 8 по значению. Выходные данные Выведите на экран изображение доски так, как это показано в примере. Обратите внимание, что символы в одной строке разделены пробелом. Примеры Ввод Вывод 4 2 . * . . * . . . . * . * . . . . * * * . . . . . * Q * * * * * * * * * . . . . . . * . * . . . . . * . . * . . . . * . . . * . .

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

Ответ:
#include <iostream>
using namespace std;
int main()
{
int y, x;
cin >> x >> y;
int a[8][8];
for (int i = 0; i < 8; ++i)
for (int j = 0; j < 8; ++j)
a[i][j] = 0;
y--;
x--;
int px = x, py = y;
while (px >= 0 && py >= 0){
a[px][py] = 2;
px--;
py--;
}
px = x, py = y;
while (px >= 0 && py < 8){
a[px][py] = 2;
px--;
py++;
}
px = x, py = y;
while (px < 8 && py < 8){
a[px][py] = 2;
px++;
py++;
}
px = x, py = y;
while (px < 8 && py >= 0){
a[px][py] = 2;
px++;
py--;
}
px = 0;
while (px < 8){
a[px][y] = 2;
px++;
}
py = 0;
while (py < 8){
a[x][py] = 2;
py++;
}
a[x][y] = 1;
for (int i = 0; i < 8; ++i){
for (int j = 0; j < 8; ++j){
if(a[i][j] == 0) cout << "." << " ";
else if(a[i][j] == 1) cout << "Q" << " ";
else cout << "*" << " ";
}
cout << endl;
}
return 0;
}
Объяснение:
вроде все просто, не знаю, что объяснять. скорее всего, есть возможность сделать это гораздо более оптимизировано, но мне было лень думать, так что сделал тупым и неоптимизированным методом, состоящем из кучи циклов while.
P. s. Если помогло, дайте лучший ответ и жмякните на "Спасибо", пожалуйста. Это мотивирует давать ответы дальше.



Для решения этой задачи вам потребуется написать программу на языке C++. Вот пример такой программы:
cpp#include <iostream>
using namespace std;
int main() {
int x, y;
cin >> x >> y;
char board[8][8];
// Инициализация доски
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
board[i][j] = '.';
}
}
// Отмечаем положение ферзя
board[x - 1][y - 1] = 'Q';
// Отмечаем клетки, которые бьет ферзь
for (int i = 0; i < 8; i++) {
board[x - 1][i] = '*'; // Горизонталь
board[i][y - 1] = '*'; // Вертикаль
if (x - 1 + i < 8 && y - 1 + i < 8) board[x - 1 + i][y - 1 + i] = '*'; // Диагональ 1
if (x - 1 - i >= 0 && y - 1 - i >= 0) board[x - 1 - i][y - 1 - i] = '*'; // Диагональ 2
if (x - 1 + i < 8 && y - 1 - i >= 0) board[x - 1 + i][y - 1 - i] = '*'; // Диагональ 3
if (x - 1 - i >= 0 && y - 1 + i < 8) board[x - 1 - i][y - 1 + i] = '*'; // Диагональ 4
}
// Выводим доску
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
cout << board[i][j] << " ";
}
cout << endl;
}
return 0;
}
Эта программа считывает координаты ферзя, создает шахматную доску, отмечает положение ферзя и все клетки, которые он бьет, и выводит результат на экран.
Пример ввода и вывода, который вы привели, будет работать с этой программой.


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