[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: RPN



Olá Zhang,

Zhang He writes:
> Tenho uma duvida sobre a entrada do calculadora: o usuario pode
> digitar uma equaçao ou nao, e eh preciso permitir que ele entra
> varios numeros no inicio? No meu ep, nao usei pilha, o usuario entra
> dois numeros(apenas) e um operador por vez, o programa calcula e pede
> outro numero. Assim d'a pra calcular uma sequencia de operaçoes.
> Preciso implementar uma pilha?

Sobre a entrada: permitir que o usuário digite uma equação não é
necessário, você pode permitir um número ou operação por linha, com
<enter> no final de cada linha. Mas se você quiser fazer com
equações, não tem problema.  

Sobre a pilha: é necessário implementar uma pilha, pois suponha que
se queira calcular a seguinte expressão: (2 + 3) * (7 + 4). Um jeito
de calcular isso seria:

2 <enter> (empilha 2)
3 <enter> (empilha 3)
+ <enter> (note que isso calcula 2 + 3 e deixa o resultado 5 no topo
da pilha)
7 <enter> (empilha 7)
4 <enter> (empilha 4)
+ <enter> (isto calcula 7 + 4 e deixa 11 no topo da pilha, abaixo do 11 está
o 5)
* <enter> (isto finalmente calcula 5 * 11 e empilha 55)

Se eu entendi a forma como você está fazendo por enquanto, você
primeiro lê dois números e uma operação, calcula a operação com esses
dois números e aguarda de novo dois números e uma operação. Isso
torna impossível calcular um exemplo como o acima sem anotar em algum
lugar os resultados das operações intermediárias. A pilha já faz esse
papel. Quanto a permitir que o usuário entre vários números no
início, se você implementar a pilha isto se torna natural (para fazer
a entrada você deve distingüir se o que foi fornecido é um número ou
uma operação - se for um número, empilhe-o, se for uma operação,
desempilhe os dois números do topo da pilha, calcule a operação com
os dois e empilhe o número resultante).

Até mais,

Daniel