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

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

Войти
Регистрация
Восстановить пароль
 
max33x
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 27
#1

Организация регулярной грамматики используя конечный автомат, представленный в виде графа - C++

23.11.2012, 03:00. Просмотров 734. Ответов 1
Метки нет (Все метки)

Доброй ночи!
Организация регулярной грамматики с помощью конечного автомата, представленного в виде графа.
Хочу попросить у вас помощи. Не получается сопоставить конечный автомат и проверку введенного в поле Edit выражения на соответствие переходов графа. Автомат реализую через case, но пока получается только по одному символу проверять. Фразу целиком посимвольно не понимаю как. Может есть примеры или может хотя бы подсказку н нужное направление. Заранее благодарен!
Организация регулярной грамматики используя конечный автомат, представленный в виде графа
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 03:00     Организация регулярной грамматики используя конечный автомат, представленный в виде графа
Посмотрите здесь:

Конечный автомат - C++
Доброго времени суток! Помогите, пожалуйста, разобрать задачу. Дано условие: C*C(aa)b(a)*(aa|ab) Для этого нужно написать задачу на...

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

Конечный автомат - C++
Всем доброго времени суток! Я в программировании кое-что понимаю, но именно что "кое-что". По болезни пропустил недели две, препод по проге...

Конечный автомат - C++
Нужно написать программу работы данного автомата.

Конечный автомат - C++
Здравствуйте! Возникли проблемы с задачей: дан набор правил q0 -> aq1, q1 -> bq2, q1 -> q2, q1 -> cq2, q2 -> aq3 и др. Нужно написать...

Детерминированный конечный автомат - C++
Всем привет,у меня такая проблема: Написал в билдере код,но не получается запустить в VS 10,никак не могу понять в чем же проблема. И кому...

Конечный автомат. Построить транслитератор - C++
Построить транслитеротор: кириллица->латиница, а также конечный автомат, осуществляющий обратную транслитерацию: латиница->кириллица в...

Конечный автомат для строк - C++
Конечный автомат для строк используя switch. Помогите пожалуйста...

Конечный автомат. Лабиринт (поиск в глубину) - C++
Пусть лабиринт задан двумерным массивом bool, индексы ячеек соответствуют их координатам. Ячейка содержит true, если она проходима, и...

Как организовать на си++ недетерминированый конечный автомат? - C++
Доброго времени суток. Подскажите пожалуйста как организовать на си++ не детерминированый конечный автомат, с теорией знаком, на практике...

Конечный автомат по поиску числовых констант в строке - C++
Построить автомат, осуществляющий чтение вектор строки, содержащей числовые константы. Например, такой: (+27, -3, 2.1, 15, 0.7Е+12). На...

Создать программу, реализующую конечный автомат и таблицу перехода. - C++
ЗАДАЧА: Ipv4 айпи адрес версии 4 (опускаем проверку ip на зарезервированные адреса, учитываем что число из ip адреса не может начинаться на...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zvoronz
271 / 238 / 21
Регистрация: 29.05.2012
Сообщений: 889
23.11.2012, 04:15     Организация регулярной грамматики используя конечный автомат, представленный в виде графа #2
Сначала составим матрицу переходов конечного автомата.
Организация регулярной грамматики используя конечный автомат, представленный в виде графа
Затем напишем код.
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
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
int termbychar(char ch)
{
    switch(ch)
    {
        case 'A': return 0;     
        case 'B': return 1;     
        case 'Z': return 2;     
    }
}
 
int main(int argc, char **argv)
{
    int state_matr[4][3] = {{1,2,-1},
                            {1,-1,3},
                            {-1,2,3},
                            {1,2,-1}};                      
    int state = 0;
    char ch;
    while((ch = getchar()) != '\n')
    {
        int term = termbychar(ch);
        state = state_matr[state][term];
        if(state == -1)     
            cout << "Error in expression!" << endl;
    }
    if(state != -1)
        cout << "Good expression!" << endl;
    getchar();
    return 0;
}
Yandex
Объявления
23.11.2012, 04:15     Организация регулярной грамматики используя конечный автомат, представленный в виде графа
Ответ Создать тему
Опции темы

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