Member 14520787 Ответов: 4

Программа на языке Си для следующих целей


Учитывая положение слона и ферзя на шахматной доске n*n, отметьте оставшиеся позиции на шахматной доске следующим образом:

'*' --- если он находится под атакой со стороны Бишопа

"$" --- если он находится под атакой королевы

"%"- если он находится под атакой как королевы, так и слона.

'.' --- если он не находится под атакой.
Input consists of 5 integers where first integer, n, corresponds to the size of the chess board.  Second and third integers correspond to the x and y coordinates of the bishop respectively, and fourth and fifth integers correspond to the x and y coordinates of the queen respectively.     Output consists of a nxn matrix obtained by applying the above rules.


Что я уже пробовал:

пожалуйста помогите я даже не в состоянии понять этот вопрос

F-ES Sitecore

Мы здесь не для того, чтобы делать за тебя уроки. Если вы не понимаете проблему, то ваша первая задача-изучить основы игры в шахматы, и это, безусловно, выходит за рамки компетенции этого форума.

Richard MacCutchan

Если вы не понимаете вопроса, то вам нужно поговорить об этом со своим учителем.

4 Ответов

Рейтинг:
2

OriginalGriff

Мы более чем готовы помочь тем, кто застрял, но это не значит, что мы здесь, чтобы сделать все это для вас! Мы не можем сделать всю работу, вам либо платят за это, либо это часть ваших оценок, и было бы совсем несправедливо, если бы мы сделали все это за вас.

Поэтому нам нужно, чтобы вы сделали работу, и мы поможем вам, когда вы застряли. Это не значит, что мы дадим вам пошаговое решение, которое вы можете сдать!
Начните с объяснения, где вы находитесь в данный момент и каков следующий шаг в этом процессе. Затем расскажите нам, что вы пытались сделать, чтобы этот следующий шаг сработал, и что произошло, когда вы это сделали.

Начните с того, что внимательно прочтите его, и если вам нужно, возьмите шахматную доску и фигуры, чтобы решить, что вам нужно.
Подумайте о том, как атакуют фигуры: например, кастрюля может "взять" фигуры только в том случае, если они находятся по диагонали на одно пространство "выше" их:

x.x
.p.
...
Что вопрос хочет, чтобы вы сделали, так это распечатали шахматную доску, показывающую, как каждый квадрат "подвергается атаке", когда вам дают расположение двух фигур. Итак, начните с доски, которая "не находится под атакой", и поместите ферзя и слона. Затем измените квадраты, на которые может переместиться Королева, и квадраты, на которые может переместиться слон.

Попробуйте сделать это на настоящей доске с маленькими кусочками бумаги, и вы поймете, что имеет в виду ваш учитель.


Рейтинг:
1

KarstenK

Это разве тяжелая работа, чтобы сделать. Вам нужны только некоторые базовые знания языка Си, как из любого учебника "Си для чайников", и поэтому сделайте это.

Совет: создайте структуру данных, к которой вы применяете некоторые функции для получения результата. Чем печатать его на экране.

Нравится:

char board[8][8] = {0};//memset to zero
//function parameter is the board and the position of the bishop
void applyBishop( char *board, int line, int row)
{
   board[line][row] = 'B';//mark position of bishop
   //here goes your code
}
бонусный совет: проверьте КАЖДЫЙ расположите его так, чтобы он находился на доске (>= 0 и <8)


Рейтинг:
0

CPallini

Вы знаете, епископ атакует позиции:

  • {x+i,y+i} с 0<=x+i<n, 0<=y+i<n
и
  • {x+i,y-i}, с 0<=x+1<n, 0<=y-i<n


Формулы ферзя те же самые, с добавлением
  • {x+i,y} с 0<=x+i<n
и
  • {x,y+i}, с 0<=y+i<n

Если вы применяете (как было предложено) такие формулы к позициям матрицы платы, то ограничения автоматически удовлетворяются.


KarstenK

Не фергет уважать позиции этих фигур. Они меняются с каждым шагом. И епископ может менять свои цветовые поля.

Рейтинг:
0

Patrice T

Цитата:
пожалуйста помогите я даже не в состоянии понять этот вопрос

Вам нужно поговорить с вашим учителем, чтобы, по крайней мере, понять вопрос.
Мы не дадим вам полного решения blowup, потому что это - не поможет вам ничему научиться.

Во-первых, слон и дама-это 2 фигуры шахматной партии, их ходы хорошо известны. Небольшой поиск должен дать вам необходимые знания.
Как только вы узнаете достаточно, возьмите лист бумаги и карандаш.
Нарисуйте образец шахматной доски и поместите обе фигуры.
Затем нарисуйте крест на каждой клетке под атакой ферзя и круг на каждой клетке под атакой слона.
Это в основном ваш алгоритм, который вы должны перевести в программу.