|
0 / 0 / 0
Регистрация: 22.12.2021
Сообщений: 47
|
|
Реализовать модель автомата на ЭВМ13.04.2023, 14:36. Показов 954. Ответов 13
Реализовать модель автомата на ЭВМ.
Требования к написанию программы: 1) программа должна работать для любого задаваемого автомата; 2) автомат задается в файле «avtomat.txt»; 3) входная цепочка задается в файле «cep.txt»; Замечание: входная цепочка задается без дополнительного параметра, указывающего на количество элементов в вводимой цепочке. Нет никакого опыта в написании таких программ, а срок сдачи уже через пару дней.
0
|
|
| 13.04.2023, 14:36 | |
|
Ответы с готовыми решениями:
13
Модель автомата Модель игрового автомата Модель детерминированного конечного автомата |
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
|
| 13.04.2023, 15:30 | |
|
Я бы сказал что задача совсем не из тривиальных. Я конечно могу постараться, однако без хотя бы базовых навыков вам будет достаточно сложно защищать решение.
Это всё что вам дали? Просто этих критерий не совсем достаточно. Например что значит "любого задаваемого автомата"? Примеров файлов avtomat.txt и cep.txt не приложили?
0
|
|
|
0 / 0 / 0
Регистрация: 22.12.2021
Сообщений: 47
|
||||||
| 13.04.2023, 16:33 [ТС] | ||||||
|
Нет, не приложили ни автомата, ни входной цепочки. Программа должна работать для любого автомата. Как я понимаю, могу выбрать автомат сам, программу я выполнил, но мне необходимо верно заполнить avtomat.txt и cep.txt для выбранного мною автомата (прилагаю программу и примеры заполнения)
И нет, нам не предоставили пример для заполнения, реализовывать его необходимо самостоятельно. Пример заполнения avtomat.txt:
Для чтения таблицы переходов, я создал метод readTransitions, который будет создаёт объект Map, в котором ключом является пара (состояние, символ) а значением - состояние, в которое осуществляется переход. Выбранный мною автомат приложен картинкой в сообщении ниже:
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.12.2021
Сообщений: 47
|
|
| 13.04.2023, 16:41 [ТС] | |
|
Выбранный автомат:
0
|
|
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
|||||
| 13.04.2023, 18:13 | |||||
|
a b b a a a b a Что касается avtomat.txt, в принципе достаточно будет лишь таблицы переходов, всё остальное выше лишнее. Зачем вам например указывать количество состояний? Оно следует из таблицы переходов. Если же вы будете дополнительно указывать количество состояний вы в принципе допускаете конфликт с таблицей переходов и этот кейс надо будет как то обрабатывать. Мой совет уберите всё лишнее, будет меньше вопросов и возможностей вас подловить на чем то. Короче я попробую что то построить исходя из ваших примеров, дальше обсудим.
0
|
|||||
|
0 / 0 / 0
Регистрация: 22.12.2021
Сообщений: 47
|
|
| 13.04.2023, 19:14 [ТС] | |
|
Проверьте, правильно ли я всё сделал. Старался следовать вашим советам
0
|
|
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
|||||||||||||||||||||||||||||||
| 13.04.2023, 19:44 | |||||||||||||||||||||||||||||||
Сообщение было отмечено TheReedGames как решение
Решение
И так вроде что то получилось.
И так я выбрал для тестирования такой автомат подготовил исходники. avtomat.txt
синтаксис такой: каждая строчка описывает отдельное состояние автомата состоящая из названия состояния перед знаком ":" и далее из перечни возможных переходов в другие состояния. При этом отдельные переходы разделены запятой, а каждый переход состоит из названия перехода (символа) перед знаком ">" и целевого состояния после знака ">". Первое состояние в списке является исходным. Это лишь один из возможных вариантов, можно также описать автомат и в различных других форматах. так будет выглядеть cep.txt
начнем с реализации класса State описывающий объекты конкретных состояний.
Объект класса State позволяет добавлять переходы указав название перехода и целевой переход (другой объект класса State). Так же есть возможность получить объект следующего состояния исходя из названия перехода. Если же такой переход не допустим (не известен) кидается IllegalArgumentException. Далее реализуем класс StateMachine описывающий собственно сам автомат.
Он способен выводить настоящее состояние автомата на экран методом printState. Он позволяет переводить автомат в другое состояние указав название перехода методом transit. А так же выбирать отдельные объекты возможных состояний по их названию методом (getStateByName). Самое интересное происходит в конструкторе. Тут вся логика постройки автомата исходя от исходного файла avtomat.txt. Сначала мы читаем исходный файл по строчкам. Далее из каждой строчки сначала строим объекты состояний, однако пока без переходов. Далее строим отдельные переходы для каждого состояния и добавляем их соответственно к состояниям. В данном решении необходимо проходить список строчек дважды, ибо добавление переходов требует указать конкретный объект состояния, то есть требуется сначала построить объекты состояний и только потом добавлять переходы. Ну и теперь осталось реализовать клиента, то есть программу которая будет управлять автоматом.
сразу даем команду выдать на экран настоящее состояние. Это будет S1 ибо S1 первое состояние в avtomat.txt и по определению является исходным. Далее читаем файл с входной цепочкой интерпретируя каждое отдельное слово/символ в качестве перехода. Для каждого перехода даем автомату команду произвести этот переход (transit) и вывести свое состояние на экран. Запуск программы выводит на экран
1
|
|||||||||||||||||||||||||||||||
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
|
| 13.04.2023, 20:09 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 22.12.2021
Сообщений: 47
|
||
| 13.04.2023, 22:10 [ТС] | ||
|
0
|
||
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
||
| 14.04.2023, 06:39 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 22.12.2021
Сообщений: 47
|
|
| 14.04.2023, 16:31 [ТС] | |
|
Уже понял, почему так. Но не можете подсказать как добавить функцию проверки синтаксиса?
0
|
|
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
||||||||||||||||
| 14.04.2023, 17:51 | ||||||||||||||||
|
При строении автомата собираем допустимые переходы в сет.
При чтении цепочки проверяем все элементы на присутствие в сете допустимых переходов. Для этого целесообразно реализовать метод проверки в самом автомате. Кликните здесь для просмотра всего текста
Автомат не допускает переход x
1
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 22.12.2021
Сообщений: 47
|
|
| 14.04.2023, 23:26 [ТС] | |
|
Спасибо, моя ситуация разрешена и я стал понимать немного больше! ♥
0
|
|
|
98 / 75 / 25
Регистрация: 17.03.2023
Сообщений: 161
|
|
| 15.04.2023, 06:26 | |
|
рад что мог помочь
0
|
|
| 15.04.2023, 06:26 | |
|
Помогаю со студенческими работами здесь
14
Модель автомата Мили в Матлаб Модель автомата Мура в Матлаб
Построить графическую модель конечного автомата Модель АСУ с двумя ЭВМ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|