Boa noite!!
Tenho um exercício para fazer e estou completamente perdida!! Não sei aonde começar nem terminar!! Ele envolve transformar uma expressão infixa em notação polonesa e não sei fazer!!
Poderiam me dar um HELP?
Segue o exercício:
Como analisar computacionalmente expressões matemáticas como:
3 + 5 * (7 – 2) / 4 = ?
Uma das possibilidades é utilizando notação polonesa reversa ou pós-fixa.
**Mas como reescrever a expressão matemática acima na notação polonesa **
reversa?
Para isso, o seguinte procedimento, utilizando pilhas, pode ser empregado:
Percorra a expressão matemática da esquerda para a direita:
**Ao encontrar um operando (números), copie-o para a expressão de **
saída.
Ao encontrar um operador (sinais correspondentes às operações):
**enquanto houver na pilha operador de maior ou igual prioridade a **
do encontrado, desempilhe-o para a expressão de saída.
empilhe o operador encontrado.
Ao encontrar um parênteses de abertura, empilhe-o.
**Ao encontrar um parênteses de fechamento, desempilhe os operadores **
para a expressão de saída até encontrar o parênteses de abertura
correspondente.
Ao final, esvazie a pilha copiando operadores para a expressão de saída.
**Considere a seguinte ordem de prioridade na avaliação de expressões **
matemáticas:
OPERACOES: PRIORIDADE:
- “Parenteses” 1(menor prioridade)*
- “Soma/ Subt.” 2*
- "multipli./ divisão 3(maior prioridade)*
**Implemente um programa, em Java, que receba uma expressão matemática e **
**imprima, na saída padrão, a mesma na notação polonesa reversa. É obrigatório o **
uso, em seu programa, de pilhas implementadas por meio de células auto referenciadas.
**A entrada padrão é composta por várias linhas sendo que a última apresenta **
**apenas a palavra FIM. A saída padrão contém o resultado da conversão da linha **
de entrada correspondente
Entradas:
3 + 5 * (7 - 2) / 4
(a * b + (c + d)) * (e + f)
A - B * (D - C)
A * B + C - (D / E + F)
(a * b) + (c * d)
FIM
Saídas:
3 5 7 2 - * 4 / +
a b * c d + + e f + *
A B D C - * -
A B * C + D E / F + -
a b * c d * +
Obrigada!!