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