Pilha + Lista Encadeada

5 respostas
igor972

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

5 Respostas

luxu

coloque como int, pq a pilha só vai nros. qdo encontra um operando ele desempilha, sakou?

igor972

Então amigo, mas ele tem que receber uma expressão: o que acho que seria uma string (" 1 2 - 4 5 + *")

Um amigo me falou sobre: StringTokenizer

Estou estudando sobre.

Se mais alguem tiver alguma sugestão, será bem vinda :wink:

luxu

quem tem q receber a expressão? a pilha? naum entendi…

igor972

Então, o usuário entrará com uma expressão.
exemplo:
Usuário digita: 2 1 + 2 2 + +

Acredito que terei que desmembra-la e adicionar cada valor na pilha

L

uma pergunta esse aplicativo é console ou Interface Grafica? Outra coisa a primeira coisa no seu codigo é definir o padrão com que o usuario irá digitar a informação para que voce possa fazer os calculos

Criado 18 de setembro de 2011
Ultima resposta 18 de set. de 2011
Respostas 5
Participantes 3