|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.03.2017, 11:43 | #1 |
Пользователь
Регистрация: 20.11.2016
Сообщений: 51
|
Конечный автомат. Как добавить состояние?
Разбираюсь с автоматоми.
Рассматриваю пример отсюда http://www.devexp.ru/2011/02/konechnye-avtomaty-v-c/ Код:
т.е. не в коде добавить, а чтобы пользователю предлагалось и он сам мог добавлять. так возможно реализовать? |
12.03.2017, 12:07 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну в данном коде очевидно нет, а так да. Просто надо создать какую-то таблицу состояний и функций, и добавлять туда.
std::vector, std::map, ... std::function, лямбды
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
12.03.2017, 12:24 | #3 | |
Пользователь
Регистрация: 20.11.2016
Сообщений: 51
|
Цитата:
• Алфавит: {0, 1} • Состояния: {ЧЕТ, НЕЧЕТ} • Начальное состояние: ЧЕТ • Функция перехода: ф(ЧЕТ,0)=ЧЕТ ф(ЧЕТ,1)=НЕЧЕТ ф(НЕЧЕТ,0)=НЕЧЕТ ф(НЕЧЕТ,1)=ЧЕТ • Допускающие состояния: {НЕЧЕТ} таблица: |
|
12.03.2017, 12:43 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Нет, таблица не такая как на картинке, тут же уже просто примеры результата с разными входными данными.
Для кода из первого сообщения хватит и просто списка вида Состояние —> Функция Например std::vector<std::function> (если просто нумеровать состояния, от 0) Или std::map<std::string, std::function> если строки вместо номеров. Код:
https://github.com/jakesgordon/javascript-state-machine https://github.com/digint/tinyfsm
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 12.03.2017 в 12:51. |
12.03.2017, 13:55 | #5 |
Пользователь
Регистрация: 20.11.2016
Сообщений: 51
|
что-то типа этого:
Код:
Последний раз редактировалось Alex11223; 12.03.2017 в 14:04. |
12.03.2017, 14:03 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Да, только в transition criteria у вас же не просто буква, а более сложная функция.
Я ж показал простой пример для данного случая. Сделать массив или map, где каждому состоянию соответствует функция (ну, указатель на нее). Функция принимает символ и возвращает новое состояние.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
12.03.2017, 15:12 | #7 | |
Пользователь
Регистрация: 20.11.2016
Сообщений: 51
|
Цитата:
что мы будем передавать через нее и что получать, для чего она, если у нас в таблице уже есть начальное состояние, переход (условие) и результат перехода (следующее состояние). |
|
12.03.2017, 15:25 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Я ж сказал что. Передавать входные данные (символ в данном случае), возвращать новое состояние.
Функция это и есть условие перехода. Не будете ж вы все существующие символы пихать в таблицу? (ну в данном случае 256 символов еще можно, но если б был Юникод, то было б совсем уныло). Наверно для начала надо осознать, что функции тоже можно использовать как данные (переменные, ...), хранить указатели на них. А с лямбдами даже и создавать новые функции во время работы программы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
15.03.2017, 22:17 | #9 | |
Пользователь
Регистрация: 20.11.2016
Сообщений: 51
|
Цитата:
вызываю ф-ю, передаю символ, а эта ф-я возвращает мне результат, что это буква, цифра.. так? |
|
15.03.2017, 22:19 | #10 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Зависит от задачи.
Функция новое состояние автомата возвращает.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
конечный автомат | fkty | Помощь студентам | 18 | 17.01.2015 18:49 |
Конечный автомат | Rыся | Помощь студентам | 1 | 11.01.2013 10:56 |
недетерминированный конечный автомат | CodeNOT | Общие вопросы C/C++ | 0 | 21.02.2012 15:48 |
Конечный автомат | maxon56 | Помощь студентам | 0 | 19.12.2011 19:32 |
Конечный автомат на Delphi | Arkuz | Общие вопросы Delphi | 4 | 02.10.2008 23:50 |