с++
Ходы коня
На шахматной доске стоит конь. Отметьте положение коня на доске и все клетки, которые он бьет. Клетку, где стоит конь, отметьте английской буквой “K”. Клетки, которые он бьёт, отметьте символами “*”. Остальные клетки заполните точками.
Входные данные
Программа получает на вход два числа — координаты коня на шахматной доске. Координаты вводятся на одной строке через пробел. Первое число обозначает номер строки, а второе — номер столбца. Все числа принимают значения от 1 до 8.
Выходные данные
Выведите на экран изображение доски так, как это показано в примере. Обратите внимание, что символы в одной строке разделены пробелом.
Примеры
Ввод
Вывод
4 2
. . . . . . . .
* . * . . . . .
. . . * . . . .
. K . . . . . .
. . . * . . . .
* . * . . . . .
. . . . . . . .
. . . . . . . .
Ответы
Ответ:
#include <iostream>
#include <vector>
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--;
a[x][y] = 1;
bool l = (x - 2 >= 0), u = (y - 2 >= 0), r = (x + 2 < 8), d = (y + 2 < 8);
bool hl = (x - 1 >= 0), hu = (y - 1 >= 0), hr = (x + 1 < 8), hd = (y + 1 < 8);
if(l && hu) a[x - 2][y - 1] = 2;
if(l && hd) a[x - 2][y + 1] = 2;
if(hl && u) a[x - 1][y - 2] = 2;
if(hl && d) a[x - 1][y + 2] = 2;
if(hr && u) a[x + 1][y - 2] = 2;
if(hr && d) a[x + 1][y + 2] = 2;
if(r && hu) a[x + 2][y - 1] = 2;
if(r && hd) a[x + 2][y + 1] = 2;
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 << "K" << " ";
else cout << "*" << " ";
}
cout << endl;
}
return 0;
}
Объяснение:
все просто. единственный момент - нужно понимать не выйдешь ли ты за пределы массива при написании "звездочки".
P. s. Если помогло, дайте пожалуйста лучший ответ и жмякните на "Спасибо". Это мотивирует давать ответы дальше.