Evaluación de una Cadena

Código

#include <iostream>
#include <string.h>
#include <iomanip>
#include <stdlib.h>
#include <fstream>
#include <vector>
using namespace std;

int comparacion(string [],string,int );
FILE *doc;

int main(int argc, char** argv) {
      cout<<"\t\t\tPROGRAMA DE PILA\n\n"<<endl;
      ifstream reglas("Reglas_Produc.txt");
      ofstream salida("Terminales.txt");
      if(!reglas){
            cerr<<"No se pudo abrir archivo...";
            exit(0);
      }
      if(!salida){
            cerr<<"No se pudo abrir archivo...";
            exit(0);
      }
      char regla1[50];
      string cadena1, temp1, produ[10], pila, m, ent, esp("  "), jj("1");
      int flecha,s,i=0,b=0;  
      while(!reglas.eof()){
            doc=fopen("terminales.txt","a+");
            reglas.getline(regla1,50);
            cadena1=regla1;
            temp1=cadena1;
            flecha=cadena1.find("-->");
            if(flecha <= 1000 && flecha >= 0){
                  pila+=regla1+esp;
                  temp1.erase(0,flecha+3);
                  produ[i]=temp1;
                  salida<<temp1;
                  i++;
                  b++;
            }
            else{
            }
      }
      int sa,du;
      du:
      cout<<"Pila:\n"<<pila<<endl<<endl;
            cout<<"Ingresa cadena a evaluar\t\t\t\t1)Salir"<<endl;
            cin>>ent;
            if(ent.compare(jj)==0){
                  goto sa;
            }
            s=comparacion(produ,ent,b);
            if(s==9){
                  cout<<"\nCadena Aceptada!!!\n";
                  system("pause");
                  system("cls");
                  goto du;
            }
            else{
                  cout<<"\nCadena no Aceptada...\n";
                  system("pause");
                  system("cls");
                  goto du;
            }
            sa:
      return 0;
}

int comparacion(string a[],string b,int c){   
      for(int i=0; i<c; i++){
            if(a[i].compare(b)==0){
                  return 9;
            }
      }
      return -1;

}


Pantallas de Salida





No hay comentarios:

Publicar un comentario