Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
diga_pr
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 65
#1

Узнать какая фигура удалена по шахматной нотации - C++

31.01.2016, 13:17. Просмотров 293. Ответов 12
Метки нет (Все метки)

Доброго времени суток! Помогите написать программу: Зная шахматную нотацию узнать какая фигура была удалена? (нотация Форсайта — Эдвардса)

Добавлено через 23 часа 16 минут
ну хотя бы идею
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2016, 13:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Узнать какая фигура удалена по шахматной нотации (C++):

вывести окно сообщений с именем клетки, где находится курсор в шахматной нотации. - C++
Уже отчаялась искать в своем городе и в сети того, кто смог бы сделать следующее. Если кто сталкивался или может помочь - буду очень...

Выводить информацию, какая фигура: квадрат или прямоугольник - C++
Надо просто расписать каждую строчку кода что она обозначает и как то модифицировать програму Вот програма надо зделать чтобы она в...

Какая фигура в блок-схеме отвечает за вывод в файл? - C++
Ребята,какая фигура применяется в языке си плюс плюс,которая выводит результат в текстовый файл,или подойдет параллелепипед?

Узнать какая кнопка была нажата SDL2.0 - C++
Привет, как в этом примере узнать какая кнопка была нажата, я хочу сделать для каждой кнопки отдельное действия, но не могу понять, как...

Как узнать какая конфигурация решения в коде? - C++
Пытаюсь определить через код, что у меня Debug или Release, не получается отыскать нужную дерективу препроцесора. Нашел для c#, что-то...

Даны две площади треугольников, узнать какая из них больше и во сколько раз - C++
Здравствуйте программисты, подскажите, как написать код, у меня даны две площади треугольника, как узнать какая из них больше и во сколько...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
31.01.2016, 14:03 #2
нужно пройтись по списку ходов и найти ходы где одна фигура становится на место другой - эта фигура, на место которой встали и была удалена.
diga_pr
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 65
31.01.2016, 14:42  [ТС] #3
Цитата Сообщение от _Valera_ Посмотреть сообщение
нужно пройтись по списку ходов и найти ходы
в нотации мне кажется нет смысла это делать, так как она показывает текущее расположение фигур на доске, и просто, если я правильно думаю, надо посмотреть по нотации какие фигуры присутствуют а каких нет, и соответственно выводить информацию, но каким образом это делать я не совсем понимаю.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
31.01.2016, 15:14 #4
Цитата Сообщение от diga_pr Посмотреть сообщение
так как она показывает текущее расположение фигур на доске,
нет. Она показывает ход и какая фигура откуда и куда пошла // только одна фигура ходит за одни ход, вот ее ход и записан
diga_pr
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 65
03.02.2016, 11:06  [ТС] #5
Цитата Сообщение от _Valera_ Посмотреть сообщение
нет. Она показывает ход и какая фигура откуда и куда пошла // только одна фигура ходит за одни ход, вот ее ход и записан
нотация Форсайта — Эдвардса (он же FEN) показывате расположение фигур на доске, может вы путаете с обычной нотацией (он же PGN) ?
Termit779
44 / 29 / 10
Регистрация: 22.11.2015
Сообщений: 98
03.02.2016, 12:54 #6
diga_pr, сравнивать FEN на каждом полуходе. Как вариант.

Добавлено через 1 час 44 минуты
Пользуйтесь на здоровье.

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
#include <iostream>
#include <vector>
#include <string>
using namespace std;
 
/*FEN: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR (упрощенный, нач.положение фигур)*/
 
int main()
{
    vector<char> fen;   // храним фен
    char buff;          
    cout << "Enter notation. End of input '$'" << endl; // конец ввода - символ '$'
    cout << "Enter FEN: ";
 
    while (cin.get(buff)) // читаем фен в вектор
    {
        if (buff == '$') break;
        fen.push_back(buff);
    }
 
    int pawn_black = 0; // кол-во черных пешек на доске
    int pawn_white = 0; // кол-во белых пешек на доске
 
    /*и так дальше для фигур белых и черных*/
 
    /********************************************************************/
    for (size_t i = 0; i < fen.size(); i++)
    {
        if (fen[i] == 'p')
        {
            ++pawn_black;   // ищем пешки черных
        }
        if (fen[i] == 'P')
        {
            ++pawn_white;   // ищем пешки белых
        }
        /*сюда пишем код для остальных фигур*/
    }
 
    /********************************************************************/
 
 
    cout << pawn_black << " " << pawn_white << endl; // поэтому можно узнать удаленные пешки черных и белых
    cout << 8-pawn_black << " " << 8-pawn_white << endl; // удалено пешек черных и белых                                                
    
    cin.get();
    return 0;
}
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
03.02.2016, 14:17 #7
Цитата Сообщение от diga_pr Посмотреть сообщение
нотация Форсайта — Эдвардса (он же FEN) показывате расположение фигур на доске, может вы путаете с обычной нотацией (он же PGN) ?
может.
diga_pr
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 65
03.02.2016, 16:09  [ТС] #8
Termit779, я сделал следующим образом:
я сделал упрощенную, где описывается начальная позиция всех фигур, нотацию. Убрал из этой нотации все знаки "/" и так же цифры. Отсортировал. Получил массив букв. После ввода новой нотации происходит тоже самое, после чего я их просто сравниваю посимвольно, и если чего то не хватает я вывожу информацию о том какой символ отстутсвует
Termit779
44 / 29 / 10
Регистрация: 22.11.2015
Сообщений: 98
03.02.2016, 16:13 #9
diga_pr, дело вкуса. Кстати покажи код.
diga_pr
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 65
04.02.2016, 22:18  [ТС] #10
Termit779, показал бы, да только у меня на js. Если надо, то могу залить)
Termit779
44 / 29 / 10
Регистрация: 22.11.2015
Сообщений: 98
05.02.2016, 11:56 #11
diga_pr, не, не нужно. На js есть готовое решение.
diga_pr
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 65
05.02.2016, 18:10  [ТС] #12
Termit779, разве? я не находил, можешь скинуть если нашел, хочу сравнить
Termit779
44 / 29 / 10
Регистрация: 22.11.2015
Сообщений: 98
05.02.2016, 20:22 #13
diga_pr, харе. Не угарай. Я сам с гит сравниваю и смотрю что и как. Знаешь? Один умный чел сказал: Если есть возможность - используй то , что есть, не думай , что ты создашь лучше, чем то, что люди делают больше 500 и более лет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2016, 20:22
Привет! Вот еще темы с ответами:

Определить какая из точек А или В наиболее удалена от начала координат - PascalABC.NET
Ввести с клавиатуры координаты точек А(х0, у0) и В(х1, у1). Определить какая из точек А или В наиболее удалена от начала координат...

Определить, какая из точек удалена от начала координат на большее расстояние - Turbo Pascal
Приветствую будущих коллег=)у меня вот проблемка...надо 3 задачки написать...помогите плиииииз))) 1. Заданы координаты двух точек на...

Определить, какая из двух точек (x1,y1) и (x2,y2) больше удалена от центра координат - C#
Определить, какая из двух точек (x1,y1) и (x2,y2) больше удалена от центра координат. Пожалуйста, помогите. Желательно решение...

Какая из трех точек на плоскости наиболее удалена от начала координат - C#
Помогите пожалуйста решить задачку (в консольном приложении) // Разработать метод который вычисляет длину отрезка по координатам...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.02.2016, 20:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru