Infixa Pós-fixa Conversões

Ontem tava fazendo um trabalho pra entregar a um professor achei que já estava pronto mas ao tentar rodar alguns testes passados pelo mesmo não funcionou bem …

é uma classe com dois métodos principais para converter expressoes Infixas para PósFixas e vice versa …
poderiam me ajudar e ver o que acontece de errado ?

este é o método que transforma de infixa para pósfixa :

 public void infixaPosfixa()
    {
        String exame = expressao;
        
        for(int i=0; i<exame.length();i++)
        {
            if ( exame.charAt(i) =='(')
                elementos.empilha("(");
            
            else if ( exame.charAt(i) == '+')
                prioridadeSinal("+");
            
            else if ( exame.charAt(i) == '-')
                prioridadeSinal("-");
            
            else if ( exame.charAt(i) == '*')
                prioridadeSinal("*");
                            
            else if ( exame.charAt(i) == '/')
                prioridadeSinal("/");
            
            else if ( exame.charAt(i) ==')')
                prioridadeSinal(")");
            
            else
                saida += exame.charAt(i);
               
                
        }
        
        while ( ! elementos.vazia ())
            saida += elementos.desempilha();
        
        System.out.println(saida);
        
    }// infixaPosfixa

e este posfixa para infixa :

public void posfixaInfixa()
    {
        String exame = expressao;
        String aux="";
        Object op1,op2;
        
        for( int i=0;i<exame.length();i++)
        {
            if (exame.charAt(i) == '+' || exame.charAt(i)=='-' ||
                exame.charAt(i) == '*' || exame.charAt(i)=='/')
            {
                op2 = elementos.desempilha();
                op1 = elementos.desempilha();
                
                aux = "("+ op1 + ""+ exame.charAt(i) + op2+")";
                elementos.empilha(aux);
            }
            
            else
            {
                elementos.empilha(exame.charAt(i));
            }
         }
        saida = aux;
    }// posfixaInfixa

ambos os métodos recebem uma string contendo a expressao ( sem espaços )

Socorro ! preciso entregar isto hoje até a meia noite !
:oops:

Olha cara, nunca tinha ouvido falar disso! Haha, dei uma pesquisada no google e achei interessante, vou dar uma estudada e te dou um retorno, tranquilo?

Vai tentando, não desista! :slight_smile:

(ajudando a subir o tópico)

Vixe cara!
Hehe, eu fiquei hoooras tentando resolver isso logicamente.

Desenvolvi uma lógica legal, mas na hora de passar pro papel vi que faltava muita coisa.
É beeem complexo isso (pensando em várias possibilidades de “erros”)

Como eu nem sabia o que era isso, infixa ou pósfixa fui dar uma pesquisada no google.
Alguns sites explicava decentemente, porém nada completo! Hehe, até que entrei num site, e havia exercícios, acertei todos e pensei “agora posso ajudar o colega!”…

Só que…
Bateu dúvidas que o site não explicava…
Coisas que podem existir:
-(-2+4) ficaria como em pósfixa? Algo como… 2-4±?
Não sei! Hehe.
Ou simplesmente… -(2+2)*5/-(-3)
Complica!

Mas eu gostei do exercício, haha, é bastaaaaaaaaaaaaaaaante forçado.

Eu não tinha dado bola pro seu código, até porque a faculdade aqui já estava me chamando pra sala de aula… Mas, agora que dei uma olhada, pareceu um POUCO mais fácil…

BY THE WAY…

Tentei criar alguns métodos como: verificaParenteses, verificaSinal, verificaFechaParenteses e tudo mais…
Pra ficar mais LIMPO o código, mas tá foda!

Creio que o jeito que eu esteja pensando seja muito mais difícil do que o exercício propõe.

É uma pena que não conseguimos resolver até ontem né?
Mas sem problemas, vamos em busca da resposta, porque não há nada pior do que não conseguir resolver algo! :slight_smile:

Aliás, querendo ou não, exercita muito o cérebro! haha.

Abraços! Qualquer coisa dê um toque (se já conseguiu fazer, me diga, mas não me fala a resposta, hihi)

caiu uma questão em uma prova de AED minha esses dias mais ou menos parecida, era pra passar uma expressão prefix para infix usando uma arvore binária de expressão. pesquisa sobre arvore de expressão ve se ajuda algo. falow

valeu pela força … a conversão de pós-fixa para infixa funciona perfeitamente … entretando o método
que eu postei está incompleto ( falta apenas adiconar alguns parânteses … ) e assim que o tiver em mãos
posto novamente …

se eu conseguir terminar a outra eu posto tb .!

abraço !

Caramba eu preciso disso Odyo!
Será que vc já acabou? Poxa se tiver acabado posta poor favor velho!

VAleu MESMO!

abraços@!!

kara, eu acho que exatamente aqui:

public void infixaPosfixa()

{

String exame = expressao;

for(int i=0; i<exame.length();i++)

{

/!!!AQUI!!!/

if ( exame.charAt(i) ==’(’)

elementos.empilha("(");

else if ( exame.charAt(i) == ‘+’)

prioridadeSinal("+"); …

Vc deveria colcocar um IF pra testar se o próximo caractere não é vazio, ou seja, um espaço em branco.

com isso vc poderia inserir números com mais de 1 caracter, ex: ‘18’ … vlw?!

Valeu Spy! Mas já entreguei esse trab há algum tempo…
Fiz dessa maneira, mas só que com um switch percorrendo cada token, e trabalhando com parênteses, colchetes e chaves.

Mas valeu mesmo assim!
Abs!

Boa noite,

Cara por favor como faz na prática converter infixa para posfixa em java? Por favor me ajuda!!!