Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729

Слон бьет врагов ???

12.01.2011, 21:36. Показов 6502. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую, всех! Кто то скажет опять эти шахматы, сам спекся когда получил задание. Но дорогие форумчани помогите с задание. Не понимаю даже с чего начать. Набрасал только начало,а дальше в ступоре
Задание следующее:
Найти возможные способы для удара слоном максимального количества вражеских фигур за N проходов исходя из определенного задаваемого поло-жения вражеских фигур, не изменяющих своего положения. Определить кратчайшие.
Вот что уже сделано:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
#include <stdlib.h>
const n=9; // razmernost massiva
void Matr(char M[][n]);
void main()
 
{
 int s1,s2,e,E,i,j,Pause;
 char A[n][n];
 clrscr();
 
 /////////enter massiv
 for(i=1; i<n; i++)
  { for(j=1; j<n; j++)
 
    if ((i+j)%2==0)
    A[i][j]='\xDB'; else
    A[i][j]='\xB1';
  }
  Matr(A);
 
  //////// enter SLON//////////
 
  i=j=n;  // dlia vhoda v cikl
  while (i>8 || j>8 || i<1 || j<1)
  {
    cout<<"\nVvedite koordinaty Slona:\n";
    cout<<"Nomer stroki (1..8)="; cin>>i;
    cout<<"Nomer stolbca(1..8)="; cin>>j; cout<<"\n";
     if (i>8 || j>8 || i<1 || j<1)
     { cout<<"ERROR! Nedopustimoe polojenie!\n"; }
  }
 
   A[i][j]='\x06';
  //   s1=i;
  //   s2=j;
 
  //   for(i=1; i<n; i++)
  //   { for(j=1; j<n; j++)
 
  //     if (s1+s2==i+j && A[i][j]!='\x06')
  //     {A[i][j]='/';}
  //   }
  //    for(i=1; i<n; i++)
  //    { for(j=1; j<n; j++)
 
  //    if(s1-s2==i-j && A[i][j]!='\x06')
  //    {A[i][j]='\x5c';}
  //   }
 
  Matr(A);
 
  ////////// enter enemies/////////
 
 E=6; // dlia vhoda v cikl
 while (E>5 || E<1)
 {
 cout<<"\nVvedite kolichestvo Vragov (1..5):"; cin>>E;
 if (E>5 || E<1)
   { cout<<"ERROR! Nedopustimoe chislo vragov!\n"; }
 }
 for(e=1; e<=E; e++)
 {
 i=j=n;  // dlia vhoda v cikl
  while (i>8 || j>8 || i<1 || j<1 || A[i][j]=='\x06'|| A[i][j]=='\x78')
  {
  cout<<"\nVvedite koordinaty Vraga "<<e<<":\n";
  cout<<"Nomer stroki (1..8)="; cin>>i;
  cout<<"Nomer stolbca(1..8)="; cin>>j; cout<<"\n";
   if (i>8 || j>8 || i<1 || j<1 || A[i][j]=='\x06'|| A[i][j]=='\x78')
    { cout<<"ERROR! Nedopustimoe polojenie!\n"; }
  }
   A[i][j]='\x78';
 }
 Matr(A);
 
 cin>>Pause;
}  ////////////THE END/////////////////
 
 
 //Function vivod massiva
 void Matr(char M[][n])
 {
 int i,j;
 cout<<"    abcdefgh\n";
 for (i=1; i<n; i++)
  { cout<<"  "<<i<<" ";
  for (j=1; j<n; j++)
   {
     cout<<setw(1)<<M[i][j];
   } cout<<" "<<i;
   cout<<endl;
   }
  cout<<"    abcdefgh\n";
  }
Буду благодарен за любую помощь!!! ОООчень нужно.
2
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2011, 21:36
Ответы с готовыми решениями:

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

На шахматной доске отметить все клетки, которые бьет слон
Шахматная доска – игровое поле 8 × 8. Сформировать двумерный массив A – схематическое изображение доски, на котором отметить положение...

Верно ли высказывание, что слон, расположенный на поле (x1, y1) шахматной доски, «бьет» поле (x2, y2)
Верно ли высказывание, что слон, расположенный на поле (x, y) шахматной доски, «бьет» поле (x1, y1) (x1, y1, x, y – целые от1 до 8); ...

40
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
15.01.2011, 15:38
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SergProgC++ Посмотреть сообщение
я думаю можно доверять человеку с репутацией 1236
SergProgC++, На самом деле репутация здесь ни при чем.
Ладно, теперь о задаче.
Я предлагаю сделать эту задачу так (с помощью рекурсии): из позиции в которой находится слон, перебираем все варианты, когда за один или два хода можно убить какую-либо вражескую фигуру. Записываем эти ходы и переносим слона на то место и снова вызываем рек. функцию.
Что бы реализовать этот вариант, мне осталось узнать только:
- что делаем если введены координаты вражеской фигуры, которую мы никогда не сможем убить нашим слоном?
- в каком виде делать вывод на экран? просто вывести координаты перемещения слона? Или показывать состояние доски с фигурами после каждого хода слона?
0
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
15.01.2011, 16:09
valeriikozlov, Слушай такая функция, тока её чуть модифицировать есть в том исходнике, что я скинул+вывод на экран реализован, можно безпроблем это использовать, тем более что всё хороше закомментировано.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
15.01.2011, 16:16
knofl, Сможете реализовать? Код Вам родной, по идее не много придется потрудится. По мне лучше написать с нуля, чем разбираться в чужом коде (даже при наличии хороших комментариев).
1
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
15.01.2011, 21:50
valeriikozlov, Попробую -нужно размять пальцы, а то текущий проект застрял и только и делаю что в инете сижу=( Разбирусь сейчас с домашними делами и напишу, хотя бы что-нить похожее, рабочее.

Добавлено через 5 часов 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#define INFINITY 10000
 
int AlphaBeta(bool color, int depth, int alfa, int beta)
{
    if(depth==0) return(Evaluate(color)); /*Если глубина равна нулю-оценка позиции*/
    int score=-INFINITY; //инициализация - оценка хода равна -10000 
    Move* move=GenMove(color); //генерация всех ходов для данного цвета
    //Move *temp=move;
    //move=move->next;
    //delete temp; //удаление ненужного - инициализационного хода
    while(move) //пока есть ход
    {
        MakeMove(move, color); //сделать ход
        move->w=-AlphaBeta(!color, depth-1, -beta, -alfa); /*вызов alpha-beta для данного хода*/
        UnMakeMove(move, color); //отмена хода
        if(move->w>score) score=move->w; /*если оценка больше score, то score равен оценке*/
        if(alfa<score) alfa=score; /*если score больше alpha - alpha равна score*/
        if(alfa>=beta) //если alph больше либо равна beta
        {
            DeleteMove(move); //удаляем все оставшиеся ходы
            return alfa; //возвращаем alpha
        }
        Move *temp=move; 
        move=move->next;
        delete temp; //удаляем текущий ход
        temp=NULL;
    }
    return(score); //возвращаем лучшую оценку
}
Вот эта рекурсивная функция, о которой мы говорили. Остаётся переделать GenMove, MakeMove и UnMakeMove
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
16.01.2011, 19:11  [ТС]
не догоняю я этот код
0
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
16.01.2011, 19:55
Тут есть пара ошибок. Ты рассмотри всё по шагам. Прочитать раз 10. Построй блок-схему, потрудись=) Поймёшь.
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
16.01.2011, 20:04  [ТС]
Легко сказать когда знаешь о чем говоришь!!!
0
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
16.01.2011, 23:46
Браток, а ты не узнаешь о чём я говорю, пока сам не окунёшься, почитай книгу - тот раздел где написано про альфа-бета отсечение.
0
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
19.01.2011, 17:42
Ну как продвижение?
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
19.01.2011, 19:12  [ТС]
Цитата Сообщение от knofl Посмотреть сообщение
Ну как продвижение?
Книжки читаю :-(
0
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
19.01.2011, 22:37
SergProgC++, Давай, давай - это полезно.
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
24.01.2011, 20:38  [ТС]
помогите доделать ну не как не догоняю!!!
0
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
02.02.2011, 13:56
SergProgC++, Ну дава, пиши что есть, подумаем. Главное ты понял, что для того чтобы всё заработало нужно последовательно сгенерить ходы, оценить каждый, выбрать один, сделать и так пока не съедим все фигуры, которые можем съесть.
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
02.02.2011, 15:07  [ТС]
Мне уже так все поставили но все равно спасибо за помощь
0
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
02.02.2011, 16:24
Ну и слава Богу=)
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
02.02.2011, 18:54  [ТС]
Если есть желание можешь реализовать!!! А то тема открытая остаеться и мне будет интересно глянуть как это должно было выглядеть
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
02.02.2011, 19:53
knofl, а у меня комп не ходит(
0
19 / 19 / 1
Регистрация: 05.04.2010
Сообщений: 122
03.02.2011, 10:47
TO ALL, В этом семе я новую версию шахмат фигачу, поэтому можно будет сделать реализацию в виде мода для шахмат, но это позже.

Добавлено через 3 минуты
almazsr, Странно всё это=( Ну ничего, ждите конца весны=) Там уже явно будет рабочий и хорошо оптимизированный код.
0
Эксперт GPSS
 Аватар для SergProgC++
555 / 414 / 105
Регистрация: 02.07.2010
Сообщений: 1,729
04.02.2011, 19:40  [ТС]
буду ждать с нетерпением хоть глазком бы глянуть
0
Chpoks
23.06.2012, 17:47
Допелите пожауйста код до конца, очень уж нужно.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2012, 17:47

Составить и протестировать функцию БЬЕТ (К1, К2, КМ), которая проверяет, бьет ли карта К1 карту К2
Описать новый структурный тип. Описать требуемые в задаче функции для работы со структурами. Продемонстрировать выполнение функций. Для...

Определить, бьет ли слон фигуру
Вот такая чудная задача...Требуется определить, бьет ли слон, стоящий на клетке с указанными координатами (номер строки и номер столбца),...

Определить, бьет ли слон, стоящий на клетке с указанными координатами
Требуется определить, бьет ли слон, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой...

Верно ли высказывание, что слон, расположенный на поле (x, y) шахматной доски, «бьет» поле (x1, y1)
Верно ли высказывание, что слон, расположенный на поле (x, y) шахматной доски, «бьет» поле (x1, y1) (x1, y1, x, y – целые от1 до 8); Как...

ИИ врагов
Я хочу чтобы враг ходил по определенной траектории и когда игрок пересекал эту траекторию, враг начинал в него стрелять. Еще было бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru