En el curso de Teoria de la Computación el profe nos dejo en el laboratorio la implementación de un APD que sea para cierto lenguaje definido,entonces hizo uno chicha nomas C(WWr), para facilitar mi implementación hize uso de librerias para “dibujar” el APD(definido) y de la Libreria Estandar de C++ (STL) para llenar y desempilar la pila.Básicamente el código consiste en dividir el string y comparalo para que pase a empilarlo y desempilarl(se imprime el proceso).Ahora para su ejecución en C++ tienes q tener instalado winbgim o te saldrá 1000000 errores
Si éste código te ha servido, no olvides en regalarnos un like y/o compartir con tus amigos para que este blog sigua creciendo ...
#include#include #include #include #include #include #include #include #include #include #define MAX 100 HANDLE hCon; using namespace std; void waitForLeftMouseClick(); void SetColor(int i); int grafica() { settextstyle(0,0,2); setcolor(WHITE); outtextxy(50,70,"TEORIA DE LA COMPUTACION"); outtextxy(70,90," APD [ww^r]"); setcolor(RED); settextstyle(0,0,1); setlinestyle(CENTER_LINE,20,2); circle (108, 260, 40);circle (60, 260, 6);circle (60, 260, 4);circle (60, 260, 2);//0 circle (343, 260, 35);circle (343, 260, 40);//1 setlinestyle(CENTER_LINE,20,2); setcolor(WHITE); settextstyle(0,0,2); outtextxy(85,250,"q0"); outtextxy(320,250,"q1"); setcolor(LIGHTBLUE); //////conectores settextstyle(0,0,2); arc (225, 390, 60, 120, 180);circle (311, 235, 4);//0,1 arc (108, 210, 320, 220, 25);circle (128, 223, 4);//0,0 arc (340, 210, 320, 220, 25);circle (355, 223, 4);//1,1 setcolor(YELLOW); outtextxy (50, 140,"a, & / X"); outtextxy (50, 157,"b, & / Y"); outtextxy (290, 140,"X, & / a"); outtextxy (290, 157,"Y, & / b"); outtextxy (155, 235,"&, & / &"); return 0; } void waitForLeftMouseClick() { clearmouseclick(WM_LBUTTONDOWN); const int DELAY = 50; int x, y; while (!ismouseclick(WM_LBUTTONDOWN)) delay(DELAY); getmouseclick(WM_LBUTTONDOWN, x, y); } void reconocedor() { stack operation; string palabra,sub_palabra; int tam,tamb; cout<<"\n --> Ingrese palabra: "; cin>>palabra; tam=palabra.size(); tamb=tam-1; string pri_palabra=("c"+palabra.substr(1,tamb/2));//primera parte de la cadena string sec_palabra=(palabra.substr(tamb/2+1,tamb)+"c");//segunda parte de la cadena string inv_palabra(sec_palabra.begin(),sec_palabra.end());//invierto sec_palabra reverse(inv_palabra.begin(),inv_palabra.end()); if(pri_palabra==inv_palabra)//si la primera subcadena es igual a la segunda subcadena { settextstyle(0,0,2); setcolor(GREEN); outtextxy(100,350,"Palabra Aceptada"); int i=0; SetColor(10);cout<<"\n\tEmpilando en q0 :"< =0; i--) { for(signed int j = 0; j < i; j++) { if(palabra[j]=='a'){SetColor(6);cout<<"\t[";SetColor(15); operation.top(); operation.pop(); cout<<" X ";SetColor(6);cout<<"]";SetColor(15);} else if(palabra[j]=='b'){SetColor(6);cout<<"\t[";SetColor(15); operation.top(); operation.pop(); cout<<" Y ";SetColor(6);cout<<"]";SetColor(15);} else {SetColor(6);cout<<"[";SetColor(15); operation.top(); operation.pop(); cout<<" Z ";SetColor(6);cout<<"]";SetColor(15);} } cout< Ingrese opcion: "; cin>>op; switch(op) { case 1: { system("cls"); imprimematrix(); cout<<"\t\t";reconocedor(); getch(); break;} }; }while(op!=2); system("PAUSE"); return EXIT_SUCCESS; } void SetColor(int i) { if(hCon == NULL) hCon = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hCon, i); }
me puedes enviarmo ami correo
ResponderEliminarme puedes enviarmo ami correo
ResponderEliminar