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