• Предмет: Информатика
  • Автор: Аноним
  • Вопрос задан 2 года назад

с++
Ходы ферзя
На шахматной доске стоит ферзь. Отметьте положение ферзя на доске и все клетки, которые бьет ферзь. Клетку, где стоит ферзь, отметьте буквой "Q", клетки, которые бьет ферзь, отметьте символами "*", остальные клетки заполните точками.

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

В двух строках входного файла заданы два числа — координаты нахождения ферзя. Числа во входном файле натуральные, не превосходящие 8 по значению.

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

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

Примеры
Ввод
Вывод
4
2
. * . . * . . .
. * . * . . . .
* * * . . . . .
* Q * * * * * *
* * * . . . . .
. * . * . . . .
. * . . * . . .
. * . . . * . .

Ответы

Ответ дал: LixusMay
50

Ответ:

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

Вас заинтересует