![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 25.05.2010
Сообщений: 1
|
![]()
Дали такое задание по курсовому проекту, не могу сообразить как написать программу, в С++ не очень то силен. Помогите пожалуйста.
Даны натуральные числа a,b,c,d,e,f, каждое из которых не превосходит восьми. На поле (a,b) шахматной доски расположена белая фигура, на поле (c,d)-черная. Составить программу, определяющую сможет ли белая фигура пойти на поле (e,f) не попав при этом под удар черной фигуры, если белая фигура - ладья, а черная- слон. Сделан примерный алгоритм, не могу написать на Си Функция ВычислитьКоординатыПокрываемыеСлоно м(х,у) массивКоординат = новый массив[ ][ ]; //цикл на увеличение х-растет у- уменьшается Пока x<=8 и у>=1 Цикл массивКоординат.добавить(x,y); //Инкрементируем х и декрементируем у х=х+1; у=у-1; КонецЦикла; //Цикл на уменьшение х уменьшается у растет Пока x>=1 и у<=8 Цикл массивКоординат.добавить(x,y); //Инкрементируем х и декрементируем у х=х-1; у=у+1; КонецЦикла; //Вернем массив координат перекрываемых слоном Возврат массивКоординат; КонецФункции; //Соответственно что бы проверить какие либо координаты на пересечения с покрываемыми координатами слона //надо передать в эту функцию координаты слона и проверить наличие координат белой фигуры в возвращаемом //массиве если они там есть то белая фигура попадает под удар черной (слона) Последний раз редактировалось Denis B; 25.05.2010 в 12:18. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 09.10.2010
Сообщений: 217
|
![]()
Я не очень понял условие.
1. Если просто надо посмотреть может ли ладья пойти на поле (e f ) то это просто.. первое условие которое надо выполнить это что ладья может туда идти( т.е a==e || b==f) Если это выполнено, то смотрим не бито ли поле. Это можно сделав сравнить модули разности координат ( т.е. |e-c|==|f-d|, если это равенство выполняется то поле(е f) лежит на диагоналях проходящих через (c d), т.е. бито слоном) 2.Если ладьи можно сделать сколько угодно ходов , то поле не должно лежать на битых полях. Что описано выше. Прога занимает в обоих случаях менее 15 строчек так что я наверно что-то не так понял 8)
Ёж птица гордая, пока не пнешь не полетит.
|
![]() |
![]() |
![]() |
#3 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
Denis B
ICQ 395-546-218 |
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 04.02.2011
Сообщений: 260
|
![]() Цитата:
1. сможет ли черная фигура сразуже срубить белую ладью(в зависимости кто первый ходит), 2. сможет ли слон заблокировать позицию e,f ., ни для кого ни секрет что слон ходит только по диагонали одного цвета. Для того чтобы проверить возможно ли такое что слон сразуже бьет по ладье(зависит от того кто первым сделает ход), проверяем след. образом: Код:
Код:
Последний раз редактировалось Летучий_СкилетиК; 25.03.2011 в 15:06. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсия-Шахматы | Маринка777 | Общие вопросы .NET | 1 | 03.12.2009 15:58 |
задача шахматы | darter96 | Помощь студентам | 7 | 25.06.2009 13:43 |
Шахматы онлайн | LAGOX | PHP | 1 | 08.05.2009 21:15 |
Delphi шахматы | kacky | Помощь студентам | 3 | 30.10.2008 20:09 |
Шахматы | Shchetnev | Фриланс | 10 | 27.05.2008 00:36 |