|
|
Другие темы раздела | |
C++ Анкета Анкета для опроса населения содержит две группы вопросов. Первая группа содержит сведения о респонденте: • возраст; • пол; • образование (начальное, среднее, высшее). Вторая группа содержит собственно вопрос анкеты, ответ на который либо ДА, либо НЕТ. Составить программу, используя последовательные классы стандартной библиотеки шаблонов С++, которая: • обеспечивает начальный ввод... https://www.cyberforum.ru/ cpp-beginners/ thread319758.html |
C++ Начало Си++ Я понимаю что данные задачи очень просты, но помогите пожалуйста...Я просто совсем нечего не шарю.. Задача 1 Дан массив X из N целых чисел. Найти индекс максимального элемента в массиве Х. Задача 2 Дан массив А из N элементов. Переставить элементы массива A в обратном порядке. Задача 3 Дан массив А из N элементов и число X. Определить, имеются ли в массиве A два расположенных рядом значения... |
C++ Сумма элементов Найти сумму элементов массива между первым и вторым отрицательным элементом. Преобразование. Преобразовать массив так чтобы сначала стояли элементы по модулю меньше единицы потом все остальные. Прошу помощи,заранее благодарен. https://www.cyberforum.ru/ cpp-beginners/ thread319722.html | C++ Строки В алфавитной строке удалить строчные буквы и удвоить заглавные Пожалуйста, помогите https://www.cyberforum.ru/ cpp-beginners/ thread319720.html |
C++ двумерные массивы Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик. Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент Помогите, пожалуйста |
C++ Геометрическая фигура
https://www.cyberforum.ru/ cpp-beginners/ thread319701.html Постановка задачи. Разработать программу, которая выводит на экран геометрическую фигуру, заполняя ее символом ‘*’ или пробелом. Размер фигуры (n) определяется при вводе. Ниже приведены варианты: 1. Пустой параллелограмм. Основание n и высота n |
C++ Подключение .h файлов в VS2010 Всем привет. Пишу курсовик. Не буду писать подробно. Задача какая: есть несколько .cpp файлов, в них во всех нужно использовать одни и те же функции. создаю .h файл. пихаю туда то что нужно. подключаю в нужных файлах. при компиляции все нормально, при отладке вылезают ошибочки типа. 1>ident.obj : error LNK2005: "void __cdecl MouseEventProc(struct _MOUSE_EVENT_RECORD)" ... https://www.cyberforum.ru/ cpp-beginners/ thread319700.html |
C++ Программы циклическиъ структур Ребятушки помогите обвал на учебе, не успеваю все делать, кому не сложно помогите пожалуйста. |
C++ Как открыть калькулятор через С++ ?
https://www.cyberforum.ru/ cpp-beginners/ thread319687.html Здравствуйте! Меня интересует такой вопрос: как открыть в програме С++ например калькулятор ? Я просто пишу мини ОС и очень нужна помощ с этим калькулятором... :) :) :) |
C++ Работа с текстурами
https://www.cyberforum.ru/ cpp-beginners/ thread319673.html 1)Привет, народ.Подскажите пожалуйста, какие библиотеки нужно использовать для решения следующей задачи (в приложении)? 2)Где можно почитать про этот инструментарий? 3)С чего лучше начать выполнение этой задачи? Спасибо. |
Добавить после первого четного элемента массива элемент с заданным значением C++ Мне задали лабораторную работу, как всегда на самостоятельное изучение! Первый и второй пункт я сделала! Проблема с 3и4 пунктом. Хотелось бы разобраться!!! 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2) Распечатать полученный массив. 3) Удалить элемент с заданным номером. 4) Добавить после первого четного элемента массива элемент со значением М+2.... |
C++ Последовательные контейнерные классы Составить программу, используя последовательные классы стандартной библиотеки шаблонов С++, которая содержит текущую информацию о заявках на авиабилеты. Каждая заявка содержат: • пункт назначения; • номер рейса; • фамилию и инициалы пассажира; • желаемую дату вылета. Программа должна обеспечивать: • хранение всех заявок в виде очереди; • добавление и удаление заявок; • по... https://www.cyberforum.ru/ cpp-beginners/ thread319664.html |
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
||||||||||||||||||||||||||
18.06.2011, 07:20 | 0 | |||||||||||||||||||||||||
Построить детерминированный конечный распознаватель - C++ - Ответ 177104918.06.2011, 07:20. Показов 9006. Ответов 5
Метки (Все метки)
Ответ
Вот ликбез. Тут и проги найдешь.
Перевод дробных констант Перевод дробных констант немного сложнее целых: нужно отдельно вычислять целую и дробную часть числа, а так же показатель степени. Пусть, как ранее, целая часть числа накапливается в переменной N, дробная часть накапливается в переменной F, а показатель степени — в переменной P. Символы входной строки можно разделить на следующие классы: - знак числа; - цифра; - точка; - порядок — символы «E» или «е»; - знак порядка — символы «+» или «-»; - другой — все остальные символы. Набор правил перехода можно записать так (не показаны переходы по ошибкам): На финише окончательно вычисляется число по формуле:
Представление автомата в виде матрицы переходов очень наглядно и часто помогает увидеть то, что трудно понять при изображении автомата в виде графа или в виде набора правил. Например, переходы в состояние ошибки должны быть определены во всех состояниях при всех входных символах. Матрица описанного автомата представлена в табл. 5.1.
Реализация, как и предыдущий вариант с функциями-состояниями (см. листинг 5.3 и 5.4), тоже проста — в основном цикле ДКА всего 3 строки. Для преобразователя помимо матрицы переходов нужно определить функции для вычисления числа. Пусть все данные для числа содержатся в следующей структуре:
Каждая функция, реализующая свою часть преобразования, должна получать в качестве параметров такую структуру и очередной символ. Функции требуется вызывать в основном цикле в определенных состояниях. Поэтому если функция возвращает следующее состояние, то вместо матрицы состояний можно инициализировать матрицу указателей на функции:
Главная функция преобразователя Double() возвращает число типа double. Если во входной строке обнаружены ошибки, то возвращается 0. В этом случае устанавливается глобальный флаг ошибки flagError, который может проверить вызывающая функция. Полная реализация преобразователя (структура Number показана выше) представлена в листинге 5.5.
Обратите внимание на то, что функции Point() и Exp(), обрабатывающие символы точки и экспоненты, фактически не делают ничего, кроме перехода в новое состояние. Это довольно частое явление при разработке конечных преобразователей. Функция отражает некоторое состояние. «Пустые» состояния необходимы для отслеживания правильной последовательности символов во входной строке. Заметим, что состояния, в которых вызывается функция, обрабатывающая «другой» символ (s2, s4, s7), являются финишными — это хорошо видно в матрице состояний автомата-распознавателя. Если во входной строке в конце нет «другого» символа, то автомат выходит из цикла при исчерпании символов строки. Поэтому в основной функции после цикла обработки выполняется проверка, в каком состоянии находился автомат после обработки всей строки. Хотя преобразователь прекрасно работает с правильными аргументами, однако в нем нет проверки на диапазон порядка. Как известно, порядок числа типа double должен быть в диапазоне от -308 до +308. Поэтому если пользователь напишет число с порядком вне этого диапазона, наш автомат-преобразователь выдаст неверный результат. Таким образом, автомат должен отслеживать количество цифр порядка (не более 3) и проверять численное значение порядка. Оставляем читателю эту модификацию преобразователя в качестве упражнения (см. «Контрольные вопросы и упражнения»). Несмотря на то, что реализация выглядит простой и прозрачной, в ней есть свои сложности. Во-первых, теряется наглядность перехода в новое состояние — переход спрятан в функции. Во-вторых, если матрица состояний имеет большую размерность, и функций-обработчиков достаточно много, то заполнение матрицы представляет серьезную проблему. Чтобы избежать ошибок, приходится подробно выписывать правила перехода: в состоянии State при наличии символа S вызвать функцию f(), перейти в состояние Next. Вернуться к обсуждению: Построить детерминированный конечный распознаватель C++
2
|
18.06.2011, 07:20 | |
Готовые ответы и решения:
5
Детерминированный конечный распознаватель Детерминированный конечный автомат Построить распознаватель языка с помощью стека Конечный автомат. Построить транслитератор |
18.06.2011, 07:20 | |
18.06.2011, 07:20 | |
Помогаю со студенческими работами здесь
0
Построить конечный автомат из вещественных чисел в 16-речной системе счисления Построить детерминированный конечный автомат Построить детерминированный конечный автомат Построить детерминированный конечный автомат |