Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
max33x
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 27
#1

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

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

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

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

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

Конечный автомат
Задание типа нахождения кратчайшей последовательности вставок и удалений одного...

Конечный автомат
Здравствуйте! Возникли проблемы с задачей: дан набор правил q0 -> aq1, q1 ->...

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

1
zvoronz
272 / 240 / 56
Регистрация: 29.05.2012
Сообщений: 889
23.11.2012, 04:15 #2
Лучший ответ Сообщение было отмечено max33x как решение

Решение

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

Затем напишем код.
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;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 04:15

Детерминированный конечный автомат
Всем привет,у меня такая проблема: Написал в билдере код,но не получается...

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

Конечный автомат. Построить транслитератор
Построить транслитеротор: кириллица-&gt;латиница, а также конечный автомат,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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