preciso de uma ajudo vossa na criação de um método em JAVA para o seguinte:
Introdução
As expressões algébricas podem ser escritas de variadas formas. Na forma que deverá estar mais habituado a ver, a notação infixa, o operador é escrito entre os operandos:
1 + 2
Uma notação alternativa, a sufixa, escreve o operador após os operandos:
1 2 +
Esta notação dispensa o uso de parêntesis visto as operações serem efectuadas assim que um operador é especificado. Entre outras vantagens, é uma solução que minimiza os acessos à memória e efectua os cálculos mais eficientemente. No caso limite é possível construir uma calculadora de notação sufixa com apenas três registos, dois para guardar dois números e um terceiro para guardar um resultado temporário de um operador binário, e isto para expressões de complexidade arbitrária.
Devido às suas vantagens, durante as décadas de 60 e 70, esta notação atingiu alguma popularidade, tendo inclusivamente existido algumas calculadoras de notação sufixa para o grande público. O desenvolvimento de um algoritmo que permite converter notação infixa para notação sufixa contribuiu para essa popularidade. Esse algoritmo é descrito de seguida. O algoritmo recebe uma string, com os vários tokens que compõem a expressão na notação infixa (1, + e 2 no exemplo acima), e devolve outra string, com a expressão na notação sufixa.
Enquanto houver tokens para ler
Ler o próximo token
Se o token for um operando
Acrescentá-lo à string de saída
Se o token for um operador, o1
Enquanto houver um operador o2 no topo da pilha com precedência maior que o1
Retirar o2 da pilha e acrescentá-lo à string de saída
Colocar o1 no topo da pilha
Se o token for '('
Acrescentá-lo ao topo da pilha
Se o token for ')'
Enquanto o operador no topo da pilha não for um '('
Retirar operadores do topo da pilha e acrescentá-los à string de saída
Retirar o '(' do topo da pilha
Quando não houver mais tokens para ler
Enquanto houver operadores na pilha
Retirar operadores do topo da pilha e acrescentá-los à string de saída
Pergunta
jxfdasilva
Bom dia companheiros,
preciso de uma ajudo vossa na criação de um método em JAVA para o seguinte:
Introdução
As expressões algébricas podem ser escritas de variadas formas. Na forma que deverá estar mais habituado a ver, a notação infixa, o operador é escrito entre os operandos:
1 + 2
Uma notação alternativa, a sufixa, escreve o operador após os operandos:
1 2 +
Esta notação dispensa o uso de parêntesis visto as operações serem efectuadas assim que um operador é especificado. Entre outras vantagens, é uma solução que minimiza os acessos à memória e efectua os cálculos mais eficientemente. No caso limite é possível construir uma calculadora de notação sufixa com apenas três registos, dois para guardar dois números e um terceiro para guardar um resultado temporário de um operador binário, e isto para expressões de complexidade arbitrária.
Devido às suas vantagens, durante as décadas de 60 e 70, esta notação atingiu alguma popularidade, tendo inclusivamente existido algumas calculadoras de notação sufixa para o grande público. O desenvolvimento de um algoritmo que permite converter notação infixa para notação sufixa contribuiu para essa popularidade. Esse algoritmo é descrito de seguida. O algoritmo recebe uma string, com os vários tokens que compõem a expressão na notação infixa (1, + e 2 no exemplo acima), e devolve outra string, com a expressão na notação sufixa.
Enquanto houver tokens para ler
Ler o próximo token
Se o token for um operando
Acrescentá-lo à string de saída
Se o token for um operador, o1
Enquanto houver um operador o2 no topo da pilha com precedência maior que o1
Retirar o2 da pilha e acrescentá-lo à string de saída
Colocar o1 no topo da pilha
Se o token for '('
Acrescentá-lo ao topo da pilha
Se o token for ')'
Enquanto o operador no topo da pilha não for um '('
Retirar operadores do topo da pilha e acrescentá-los à string de saída
Retirar o '(' do topo da pilha
Quando não houver mais tokens para ler
Enquanto houver operadores na pilha
Retirar operadores do topo da pilha e acrescentá-los à string de saída
Se poderem postar algumas dicas, agradeço.
Eu não domino JAVA (trabalho com DELPHI ).
Abraço a todos.
José
África - Moçambique
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.