O trabalho é o Seguinte !!!! O trabalho consiste em escrever um programa que lê a descrição de um autômato finito e verifica se determinadas cadeias fazem parte da linguagem reconhecida por esse autômato finito. A descrição do autômato a ser executado é feita num arquivo que tem o seguinte formato: 1. na primeira linha do arquivo vem o número de símbolos do alfabeto 2. em seguida vem o alfabeto sobre o qual o autômato é definido 3. em seguida vem o número de estados do autômato 4. em seguida vem uma seqüência de comandos state <label> [initial] [final] Cada linha dessas descreve um estado. Cada estado possui obrigatoriamente um nome (label) e pode ser um estado inicial e/ou final ou um estado qualquer. 5. em seguida vem uma seqüência de comandos transition <estado origem> <estado destino> <letras> Cada uma dessas declarações descreve uma transição. Os estados devem ter sido declarados anteriormente. As letras indicam quais símbolos do alfabeto levam àquela transição. Abaixo segue um exemplo de autômato e seu respectivo arquivo. Exemplo: Arquivo 3 a b c 3 state s1 initial final state s2 state s3 transition s1 s1 b transition s1 s2 a transition s2 s1 b c transition s1 s3 c transition s3 s1 a b transition s2 s3 a transition s3 s2 c O seu programa deve perguntar o nome do arquivo que contém a descrição do autômato a ser executado. Em seguida, o usuário pode digitar cadeias de caracteres e o programa deve indicar se: 1) a cadeia pertence à linguagem do autômato finito; 2) ela não pertence; 3) um erro ocorreu (por exemplo, a cadeia contém caracteres que não pertencem ao alfabeto especificado). Além de indicar se a cadeia pertence ou não à linguagem, o programa deve permitir ao usuário escolher se quer visualizar os estados ativos em cada passo do autômato. já implementei parte do programa queria ajuda no resto!!! PROGRAMA !!!! #include <iostream.h> #include <conio.h> #include <fstream.h> #include <stdio.h> #include <string.h> #include <math.h> int t; struct transition { char* origem; char* destino; char letra; }; struct state { char* nome; int inicial; int final; }; void main() { ifstream arqent; char* alfabeto; char caminho[100],estado[10],temp[20]; int i,tam,estados; cout<<"\nDigite o caminho do arquivo:\n"; gets(caminho); arqent.open(caminho); if (!arqent) cout<<"\nArquivo não pode ser aberto!"; else { arqent>>tam; alfabeto = new char[tam]; for(i=0;i<tam;i++) { arqent>>alfabeto; } arqent>>estados; state e[6]; for (i=0;i<estados;i++) { arqent>>temp; if (strcmp("state",temp)==0) arqent>>e.nome; arqent>>temp; if (strcmp("initial",temp)==0) e.inicial=1; arqent>>temp; if (strcmp("final",temp)==0) e.final=1; } t=estados*tam; transition transicao[25]; for(i=0;i<t;i++) { arqent>>temp; arqent>>transicao.origem; arqent>>transicao.destino; arqent>>transicao.letra; } char* cadeia; cout<<"\nDigite a cadeia: "; gets(cadeia); } getch(); arqent.close(); }