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(); }