Pila

4
PILA Código: #include <iostream> #include <cstdlib> #include <fstream> /*Marycarmen Alcantara Mancila Alicia Sandoval Camacho Alma Itzel Ramirez Lopez*/ FILE *doc; using namespace std; void reglas(); void pila(); int buscar (string v, string salida); int buscar2 (string v, string salida); int main(int argc, char** argv) { cout<<"***REGLAS DE PRODUCCION***"<<endl; reglas(); cout<<"***Evaluacion de la cadena***"<<endl; pila(); return 0; } int buscar (string v, string salida){ for(int i=0;i<salida.length();i++){ if(v.compare(salida.substr(i,1))==0){ return -1; } } return 0; } void reglas(){ ifstream produc("reglasdeproduccion.txt"); ofstream sderecho("derecha.txt"); ofstream sizquierdo("izquierda.txt"); char renglon3[200],r[100]; string cad3, alfabeto3(""); string cadena1; cadena1=r; string ladoizquierdo(""),temp,de(""),temp2;

Transcript of Pila

Page 1: Pila

PILACódigo:#include <iostream>#include <cstdlib>#include <fstream>/*Marycarmen Alcantara MancilaAlicia Sandoval CamachoAlma Itzel Ramirez Lopez*/FILE *doc;using namespace std;void reglas();void pila();int buscar (string v, string salida);int buscar2 (string v, string salida);int main(int argc, char** argv) {cout<<"***REGLAS DE PRODUCCION***"<<endl; reglas();cout<<"***Evaluacion de la cadena***"<<endl;pila();

return 0;}int buscar (string v, string salida){

for(int i=0;i<salida.length();i++){if(v.compare(salida.substr(i,1))==0){

return -1;}

}return 0;

}void reglas(){

ifstream produc("reglasdeproduccion.txt");ofstream sderecho("derecha.txt");ofstream sizquierdo("izquierda.txt");char renglon3[200],r[100];string cad3, alfabeto3("");string cadena1;

cadena1=r;

string ladoizquierdo(""),temp,de(""),temp2;int simb,rango;while(!produc.eof()){

doc=fopen("izquierda.txt","a+");produc.getline(renglon3,200);cad3=renglon3;temp2.assign(cad3);temp.assign(cad3);

Page 2: Pila

simb=cad3.find("-->");

if(simb<=1000 && simb>=0){rango=cad3.length()-(simb);temp2.erase(0,simb+3);temp.erase(simb,rango);ladoizquierdo+=temp;de+=temp2;

}else{

}

}cout<<"**SIMBOLOS NO TERMINALES** "<<ladoizquierdo<<endl;cout<<"**SIMBOLOS TERMINALES** "<<de<<endl;sizquierdo<<ladoizquierdo;doc=fopen("derecha.txt","a+");sderecho<<de;cout<<endl<<endl;for(int i=0;i< cadena1.length(); i++){

for(int j=0;j< de.length(); j++) {if(cadena1.substr(i,1).compare(de.substr(j,1) )==0){

if(buscar(cadena1.substr(i,1),alfabeto3 )==0){alfabeto3+=de.substr(j,1) ;

}}

}}

} void pila(){ ifstream produc("reglasdeproduccion.txt");ifstream evaluar("derecha.txt");cout<<"***EVALUACIONES DE CADENA***"<<endl;

string pop;string lol;char renglon3[200],r[100];while(!evaluar.eof()){cout<<"Ingresa tu cadena: "<<endl;cin>>pop;evaluar.getline(renglon3,200);lol=renglon3;if (lol==pop){

cout<<"Cadena aceptada"<<endl;}

else{cout<<"Cadena rechazada "<<endl;

}

Page 3: Pila

system("pause");} }

Pantalla de salida: