Polonesa e polonesa Reversa

2 respostas
F

Boa noite!!

Postando para quem precisa em estrutura os códigos para notaçao prefixa e posfixa :)
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

qualquer duvidas....mando o projetinho pronto!!
vlw

2 Respostas

Joao.Gabriel

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

F

Cara,

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

valeeeu!

Criado 7 de abril de 2009
Ultima resposta 19 de abr. de 2009
Respostas 2
Participantes 3