Предмет: Информатика, автор: Аноним

с++
Ходы коня

На шахматной доске стоит конь. Отметьте положение коня на доске и все клетки, которые он бьет. Клетку, где стоит конь, отметьте английской буквой “K”. Клетки, которые он бьёт, отметьте символами “*”. Остальные клетки заполните точками.


Входные данные


Программа получает на вход два числа — координаты коня на шахматной доске. Координаты вводятся на одной строке через пробел. Первое число обозначает номер строки, а второе — номер столбца. Все числа принимают значения от 1 до 8.


Выходные данные


Выведите на экран изображение доски так, как это показано в примере. Обратите внимание, что символы в одной строке разделены пробелом.


Примеры

Ввод

Вывод

4 2

. . . . . . . .

* . * . . . . .

. . . * . . . .

. K . . . . . .

. . . * . . . .

* . * . . . . .

. . . . . . . .

. . . . . . . .

Ответы

Автор ответа: LixusMay
67

Ответ:

#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. Если помогло, дайте пожалуйста лучший ответ и жмякните на "Спасибо". Это мотивирует давать ответы дальше.  


LixusMay: ну видимо, смотря кто пишет)
Похожие вопросы
Предмет: Английский язык, автор: УмнаяДевочка111
Предмет: Математика, автор: Amahasla1363
Предмет: Русский язык, автор: ondabaevaaidan198