domingo, 24 de mayo de 2015

Pila


Código en c++ de pila
#include <iostream>
#include <string.h>
#include <iomanip>
#include <stdlib.h>
#include <fstream>
using namespace std;
int comparacion(string [],string,int );
FILE *doc;
int main(int argc, char** argv) {
      ifstream reglas("reglasproduccion.txt");
      if(!reglas){
            cerr<<"No se pudo abrir archivo";
            exit(0);
      }
      ofstream salida("terminales.txt");
      if(!salida){
            cerr<<"No se pudo abrir archivo";
            exit(0);
      }
     
      char reg1[50];
      string cadena,temporal,produccion[10],pila,m,ent,esp("\n"),S("1");
      int flecha,s,i=0,b=0;  
     
      while(!reglas.eof()){
            doc=fopen("terminales.txt","a+");
            reglas.getline(reg1,50);
            cadena=reg1;
            temporal=cadena;
            flecha=cadena.find("-->");
            if(flecha<=1000 && flecha>=0){
                  pila+=reg1+esp;
                  temporal.erase(0,flecha+3);
                  produccion[i]=temporal;
                  salida<<temporal;
                  i++;
                  b++;
            }
            else{
                 
           
            }
      }
      int ss,u;
       u:
      cout<<"\t\t\t\tREALIZADO POR"<<endl;
      cout<<"\t\t\tALBERTO ALEXIS ALVA MARTINEZ"<<endl;
      cout<<"\t\t\tCARLOS LOPEZ IBARRA\n"<<endl;
      cout<<"\n\n----------------------------------------Pila------------------------------------"<<pila;
      cout<<"--------------------------------------------------------------------------------";
      cout<<"\n\t\tpresione [1] en caso de que quiera Salir del programa\n"<<endl;
      cout<<"\t\t\tA)Ingresa cadena a evaluar"<<endl;
      cin>>ent;

            if(ent.compare(S)==0){
                  goto ss;
            }
             s=comparacion(produccion,ent,b);
            if(s==9){
                  cout<<"Cadena aceptada!!\n\n\t";
                  goto u;
            }
            else{
                  cout<<"Cadena no valida\n\n\t";
                  goto u;
            }
            ss:
      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;
}


PANTALLA DE SALIDA



0 comentarios :

Publicar un comentario