Witam,
Napisałem program w języku C++, w którym zaimplementowałem drzewo TRIE(do przechowywania zmiennych) oraz algorytmy do konwersji na ONP oraz obliczania wartości wyrażenia w ONP.
Mój program powinien :
1. Obliczyć wartość wyrażenia. - co już mam gotowe.
2. Obliczyć wartość zmiennej, znając wartość wyrażenia, dokładnie chodzi o coś takiego:
WYZNACZ x ( ( x + 1 ) * 2 - ( 3 / 4 ) ) = ( 60 )
WYZNACZ x ( ( 1 + 2 ) * 3 - ( x / 4 ) ) = ( 60 )
Dostałem podpowiedź od wykładowcy, powinienem przekształcać lewą stronę w ten sposób by została tam tylko zmienna X. Czyli najpierw przerzuć -3/4 na prawo = +3/4, potem podzielić przez 2 i odjąć jeden.
Problem w tym, że całe wyrażenie jest w ONP czyli x 1 + 2 * 3 4 / -
W dodatku, podczas wyliczenia czegoś takiego znajdując zmienną (x), odrazu podstawiam wartość, ponieważ cały algorytm obliczający, oparty jest na stosie, którego elementem jest typ DOUBLE.
W jaki sposób powinienem wiedzieć, które operacje oraz wartości przenosić?