Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Elias Flores en 8 Julio 2019, 18:02 PM

Título: Proyecto Analizador de Parentesis implementado con Puntero de Clase Pila
Publicado por: Elias Flores en 8 Julio 2019, 18:02 PM
Código (cpp) [Seleccionar]

#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
struct Nodo{
int Elemento;
Nodo *Sig;
};
class Pila{
private:
Nodo *Tope;
public:
void Crear();
bool Vacia();
void Meter(int);
void Sacar(int &);
//int Cima();
void Mostrar();
void Analizar();
};
void Pila::Crear(){
  Tope=NULL;
}
bool Pila::Vacia(){
 return Tope==NULL;
}
//int Pila::Cima(){
 //if(!Vacia()){
 //return Tope->Elemento;
 //}
//}
void Pila::Meter(int E){
 Nodo *aux=new Nodo();
 if(aux!=NULL){
aux->Elemento=E;
aux->Sig=Tope;
Tope=aux;
 }
}
void Pila::Sacar(int &E){
 if(!Vacia()){
Nodo *aux=Tope;
E=Tope->Elemento;
Tope=Tope->Sig;
delete(aux);
 }
}
void Pila::Analizar(){
   Pila p;
char frase [30];
int x,c,d;
p.Crear();
c=0;
d=0;
cout<<"Escriba un texto: "<<endl;
cin>>frase;
int i=0;
while(frase[i]!='\0'){
  if(frase[i]=='('){
  p.Meter(frase[i]);
  c++;
  }
  if(frase[i]==')'){
  p.Sacar(x);
  d++;
  }
  i++;
}
if(c==d)
cout<<"Los parentesis estan correctos"<<endl;
else
cout<<"Los parentesis estan incorrectos"<<endl;
}
void Pila::Mostrar(){
Nodo *aux=Tope;
if (!Vacia()) {
  while (aux!=NULL){
cout<<"||\t";
cout<<aux->Elemento;
cout<<"\t ||\n";
aux=aux->Sig;
}
}else{
cout<<" ||\t \t||\n";
}
}
int main(){
bool menu=true;int i;Pila P;
   while(menu){
cout<<"\t\t*********************************"<<endl;
cout<<"\t\t*\tMENU\t\t\t*"<<endl;
cout<<"\t\t*********************************"<<endl;
cout<<"\t\t*\t1.-Analizar Frase: \t*"<<endl;
cout<<"\t\t*\t2.-Mostrar Pila\t\t*"<<endl;
cout<<"\t\t*\t3.-Salir\t\t*"<<endl;
cout<<"\t\t*********************************"<<endl;
cin>>i;
       if(i==1){
           P.Analizar();
       }else{
           if(i==2){
               P.Mostrar();
           }else{
               if(i==3){
                   exit(0);
               }
           }
       }
}
   return 0;
}
Título: Re: Proyecto Analizador de Parentesis implementado con Puntero de Clase Pila
Publicado por: K-YreX en 10 Julio 2019, 21:48 PM
Algunas funciones son mejorables...
Título: Re: Proyecto Analizador de Parentesis implementado con Puntero de Clase Pila
Publicado por: Elias Flores en 14 Julio 2019, 00:48 AM
El codigo en si puede ser mucho mas corto con recurison y añadiendo los consejos que me diste pero el docente con el que estoy me pide hacerlo de esta forma para aprender a estructurar codigos ya que la materia en la que estoy se llama ESTRUCTURA DE DATOS 1 lo subi por si alguien necesita una orientacion en este tema de la carrera de programacion yo mismo lo arreglaria el codigo pero estoy en examenes FINALES T_T pero si gusta modificarlo hazlo 8D solo recuerda compartir al final tu codigo MODIFICADO para ayudar a la comunidad y recuerda EL QUE NO COMPARTE NO ENTRA AL CIELO  ;-) :D :D ;D