Qual das seguintes notações do Postfix representa corretamente o Infix Soma 1+2+3+4?
-
27-09-2019 - |
Pergunta
Estou testando um conversor de infix a postfix-infix e encontrei algum tipo de incerteza. Por exemplo, uma soma simples de infix
1 + 2 + 3 + 4
pode ser convertido para pós -fixo um
1 2 + 3 + 4 +
Supondo que os operadores com igual precedência não sejam acumulados. Se eles são, então eu entendo
1 2 3 4 + + +
Por outro lado, todas as seguintes expressões pós -fix podem ser convertidas para a soma inicial
1 2 + 3 + 4 +
1 2 + 3 4 + +
1 2 3 4 + + +
Todas essas expressões pós -fix estão corretas?
Atualização1
Se você fizesse esse conversor, a qual formulário você escolheria? Eu preciso escolher um para teste.
Solução
Você precisa definir uma restrição extra.
Matematicamente, suas expressões postfix são todas iguais. Mas em uma adição inteira de computador não é realmente comutativa por causa do transbordamento.
Substitua 1 2 3 4 pelo ABCD e considere a possibilidade de transbordamento. A maioria das linguagens de programação define isso a + b + c + d
deve ser avaliado da esquerda para a direita para que a b + c + d +
é a única tradução correta.
Somente quando você define que a ordem de avaliação não é "não especificada", todas as versões postfix são equivalentes. Esse foi o caso de compiladores (mais antigos) C.
Outras dicas
Sim, tudo correto. Eles correspondem às seguintes expressões de infix entre colchetes:
((1 + 2) + 3) + 4
(1 + 2) + (3 + 4)
1 + (2 + (3 + 4))
+
é confuso - é comutativo, então, de fato, todo resultado parece correto.
Considere a substituição +
com outros operadores: 1 a 2 b 3 c 4
.
O resultado correto aqui, para operadores associativos à esquerda, é
1 2 a 3 b 4 c
Então, no seu caso, eu esperaria 1 2 + 3 + 4 +