Olá Galera.
Estou tentando fazer um exercicio de pilha com lista Encadeada. Mas estou com uma duvida de como eu poderia receber os parâmetros(operadores: + , - , * , /) que são pedidos no exercício.
Segue exercicio:
Um bom exemplo de aplicação de pilha é o funcionamento das calculadoras da HP (Hew lett-Packard ). Elas trabalham com expressões pós-fixadas, então para avaliar uma expressão como
(1 - 2) * (4 + 5) podemos digitar 1 2 - 4 5 + * . O funcionamento dessas calculadoras é muito simples. Cada operando é empilhado em um pilha de valores. Quando se encontra um
operador, desempilha-se o número apropriado de operandos (dois para operadores binários e um para operadores unários), realiza-se a operação devida e empilha-se o resultado. Desse
modo, na expressão citada, são empilhados os valores 1 e 2 . Quando aparece o operador - , 1 e 2 são desempilhados, e o resultado da operação, no caso - 1 (= 1 - 2 ), é colocado no topo da
pilha. A seguir, 4 e 5 são empilhados. O operador seguinte, + , desempilha o 4 e 5 e empilha o resultado da soma, 9 . Nesse momento, estão na pilha os dois resultados parciais, - 1 na base e
9 no topo. O operador x , então, desempilha os dois e coloca - 9 (= 1 * 9 ) no topo da pilha. Implemente uma calculadora pós-fixada que interage com o usuário como apresentado
abaixo:
1 2 - 4 5 + * --> digitado pelo usuario
1.00
2.00
- 1.00
4.00
5.00
9.00 - 9.00
2 / —> digitado pelo usuario
2.00 - 4.50
- 1 * —> digitado pelo usuario
- 1.00
4.50
q -------> digitado pelo usuario f i n a l i z a o programa
Os operandos aceitos pelo programa são todos os números reais entre -10.000 e +10.000 .
Os operadores aceitos pelo programa são:
> soma (+ );
> subtração (-);
> multiplicação (* );
> divisão (= );
> raiz quadrada (r ), e;
> potenciação com expoente igual a 2 (**).
Importante: como a potenciação em questão é sempre com expoente igual a 2 , este operador
deve ser considerado como unário neste exercício.
====================================//=================================
Minha duvida:
Tenho que receber os operadores… se eu colocasse o método que recebe os valores como int, float, double; eles não reconheceriam esta ordem: 1 2 +
Teria que colocar o tupo do método como String e fazer tratamento?
Alguma sugestão?
Obrigado
