Polonesa e polonesa Reversa

Boa noite!!

Postando para quem precisa em estrutura os códigos para notaçao prefixa e posfixa :slight_smile:

[code]public void converteInParaPre() {
char optop, opthis;
String exInfixa = JTInFixa.getText().toUpperCase();
int tamanhoMaxInfixa = exInfixa.length();
Pilha pEntrada = new Pilha();
Pilha pAux = new Pilha();
Pilha pSaida = new Pilha();
pEntrada.construir(tamanhoMaxInfixa);
pSaida.construir(tamanhoMaxInfixa);
pAux.construir(tamanhoMaxInfixa);
String saida = “”;
if (testeExpressao(exInfixa, tamanhoMaxInfixa)) {
for (int i = 0; i < tamanhoMaxInfixa; i++) {
pEntrada.push(exInfixa.charAt(i));
}

        while (!pEntrada.eVazia()) {
            opthis = String.valueOf(pEntrada.pop()).charAt(0);
            if (opthis >= 'A' && opthis <= 'Z') {
                pSaida.push(opthis);
            } else if (opthis == ')') {
                pAux.push(opthis);
            } else if (opthis == '(') {
                while (!pAux.eVazia()) {
                    opthis = String.valueOf(pAux.pop()).charAt(0);
                    if (opthis != ')') {
                        pSaida.push(opthis);
                    } else {
                        break;
                    }
                }
            } else if ((opthis == '+') || (opthis == '-') || (opthis == '*') || (opthis == '/') || (opthis == '^') || (opthis == '!')) {
                if (pAux.eVazia()) {
                    pAux.push(opthis);
                } else {
                    while (!pAux.eVazia()) {
                        optop = String.valueOf(pAux.pop()).charAt(0);
                        if (optop == ')') {
                            pAux.push(optop);
                            break;
                        }
                        if ((optop == '+') || (optop == '-') || (optop == '*') || (optop == '/') || (optop == '^') || (optop == '!')) {
                            if (operador(optop) <= operador(opthis)) {
                                pAux.push(optop);
                                break;
                            } else if (operador(optop) > operador(opthis)) {
                                pSaida.push(optop);
                            }
                        }
                    }
                    pAux.push(opthis);
                }
            }
        }

        if (pEntrada.eVazia()) {
            while (!pAux.eVazia()) {
                pSaida.push(pAux.pop());
            }
        }


        while (!pSaida.eVazia()) {
            saida = saida + pSaida.pop();
        }
        JTPreFixa.setText(saida);

    }
}

code[]public void converteInParaPos() {
Pilha pilha = new Pilha();
pilha.construir(225);
int resultado;
int pr = 0;
String exInfixa = JTInFixa.getText().toUpperCase();
int tamanhoMaxInfixa = exInfixa.length();
char exPosfixa[] = new char[tamanhoMaxInfixa];

    if (testeExpressao(exInfixa, tamanhoMaxInfixa)) {//chama teste de expressao passando a expressão infixa
        //e seu tamanho
        j = -1;
        for (int i = 0; i <= tamanhoMaxInfixa - 1; i++) {
            x = exInfixa.charAt(i);
            /*Se o valor de x for igual a A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,
            V,X,W,Y,Z, o valor de x é inserido na exPosfixa que é uma array de
            caracteres */
            if ((x >= 'A' && x <= 'Z')) {
                j++;
                exPosfixa[j] = x;
            }
            // Se o valor de x for igual +,-,*,/,^, ! pr recebe prioridade.operador
            if ((x == '+') || (x == '-') || (x == '*') || (x == '/') || (x == '^') || (x == '!')) {
                pr = operador(x);
                while (!pilha.eVazia() && pilha.top() >= pr) {
                    j++;
                    exPosfixa[j] = pilha.pop();
                }
                pilha.push(x);
            }
            if (x == '(') {
                pilha.push(x);
            }
            if (x == ')') {
                z = pilha.pop();
                while (z != '(') {
                    j++;
                    exPosfixa[j] = z;
                    z = pilha.pop();
                }
            }
        }//fim do laço para conversao
        while (!pilha.eVazia()) {
            z = pilha.pop();
            if (z != '(') {
                j++;
                exPosfixa[j] = z;
            }
        }
        posfixa = posfixa.valueOf(exPosfixa);//posfixa recebe a expressao convertida ExPosfixa
        exPosfixa1 = exPosfixa;//para enviar a expressao correta pelo botao calcular
        JTPosFixa.setText(posfixa);//insere no JText a expressao posfixa
    }//fim do if para chamar o metodo de teste da expressão
}//fim da conversao

[/code]

qualquer duvidas…mando o projetinho pronto!!
vlw

Lembre-se de fechar a tag code aí… [/code]

Cara,

manda então o tal do projetinho pronto…
tô me quebrando aqui!

valeeeu!