elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con la conversión de notación infija a postfija
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con la conversión de notación infija a postfija  (Leído 3,445 veces)
GominaTilted

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Ayuda con la conversión de notación infija a postfija
« en: 14 Abril 2019, 19:36 pm »

Buenas, tengo un código que supuestamente pasa una expresión aritmética escrita con notación infija a postfija, pero la realidad es que no hace nada, o eso parece:

Código:
void Expresion :: ConvertirEnPostfija ()
{
    Pila p;
   
    string chara, aux;
   
    for (unsigned int i = 0; i < infija.size(); i++)
    {
       
        chara = infija[i];
       
        if (chara == "(")
        {
            p.Apilar(chara); 
}

else
if (chara == ")")
{
p.CimaPila(aux);
while (!(p.PilaVacia() && aux == "("))
        {
        p.Desapilar();
        postfija.push_back(aux);
        p.CimaPila(aux);
}

if (aux == "(")
   p.Desapilar();
   
else
cerr << "ERROR";     
}

else
if (chara == "+" || chara == "-" || chara == "*" || chara == "/" || chara == ")")
{
p.CimaPila(aux);

while (!p.PilaVacia() && !(chara == "(" && aux >= chara))
{
p.Desapilar();
postfija.push_back(aux);
p.CimaPila(aux);
}

p.Apilar(chara);
}

else
   postfija.push_back(chara);
     
while (!p.PilaVacia())
    {
          p.CimaPila(aux);
p.Desapilar();
postfija.push_back(aux);   
    }
    }
     
    return;
}

También necesito ayuda para que deje introducir la expresión con espacios en blanco, ya que usando "cin" salta al último caso del switch en el main, pero el getline me da error.
Código:
switch (opcion) 
{

case 1:
cin >> aritmetica;
exp.PonerExpresion(aritmetica); 
break;


/*Mas opciones que no vienen al caso*/

case 0:
cout << "fin del programa." // salta directamente aquí
break;

default:
            cout << "Opcion no valida" << endl;
}


En línea

Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Ayuda con la conversión de notación infija a postfija
« Respuesta #1 en: 18 Abril 2019, 07:36 am »

La verdad que no se

Código
  1. void postfija(tcad &cadena)
  2. {
  3. int i, j=0;
  4. tpila pila;
  5. tcad expresion_postfija;
  6. init_stack(pila);
  7. for(i=0;i<strlen(cadena);i++){
  8. if(isdigit(cadena[i])){
  9. expresion_postfija[j]=cadena[i];
  10. j++;
  11. }
  12. else{
  13. if(empty_stack(pila)==true)
  14. push_stack(pila,cadena[i]);
  15. else{
  16. if(prioridad(cadena[i],top_stack(pila))==true)
  17. push_stack(pila,cadena[i]);
  18. else{
  19. while(empty_stack(pila)==false && prioridad(cadena[i],top_stack(pila))==false){
  20. expresion_postfija[j]=pop_stack(pila);
  21. j++;
  22. }
  23. push_stack(pila,cadena[i]);
  24. }
  25. }
  26. }
  27. }
  28. while(empty_stack(pila)==false){
  29. expresion_postfija[j]=pop_stack(pila);
  30. j++;
  31. }
  32. expresion_postfija[j]='\0';
  33. cout<<"Expresion postfija: "<<expresion_postfija<<endl;
  34. }


Código
  1. bool prioridad(char a, char b)
  2. {
  3. int operador1, operador2;
  4. switch(a){
  5. case '^': operador1=2;break;
  6. case '*': case '/': operador1=1;break;
  7. case '+': case '-': operador1=0;break;
  8. }
  9. switch(b){
  10. case '^': operador2=2;break;
  11. case '*': case '/': operador2=1;break;
  12. case '+': case '-': operador2=0;break;
  13. }
  14. return operador1>operador2;
  15. }


En línea

7w7
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Infija a Prefija
Programación C/C++
delirio 2 11,052 Último mensaje 25 Julio 2011, 09:46 am
por Beakman
Como crear un agoritmo que convierta una expresion postfija a prefija??
Programación C/C++
milber10 0 3,064 Último mensaje 16 Noviembre 2011, 21:44 pm
por milber10
evaluacion postfija
Java
BTO911 1 9,280 Último mensaje 29 Octubre 2013, 19:37 pm
por egyware
Ayuda con conversión
Programación C/C++
Kaxperday 0 1,451 Último mensaje 22 Junio 2015, 15:47 pm
por Kaxperday
Evaluación de una expresión postfija
Programación C/C++
sinhue 0 4,911 Último mensaje 1 Octubre 2016, 05:09 am
por sinhue
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines