Przechowanie wyrażenia algebraicznego po to by..

0

Siema. Piszę prosty parser wyrażeń algebraicznych, w miarę możliwości będę dodawał mu nowe rzeczy. Bazuje on na drzewie wyrażenia algebraicznego. Póki co można po wprowadzeniu wyrażenia podstawić wartość liczbową pod zmienną, i dla tej zmiennej obliczyć wyrażenie.

Teraz zastanawiam się, jakie struktury by były potrzebne, żeby można było pomnożyć jedno wyrażenie przez drugie, np. w ten sposób:

 
//pseudokod
class Wyrazenie{ ... };

Wyrazenie A("(x^2)-7"),  B("(y-1)*(y+2)"),  C = A*B;

Wszelkie sugestie mile czytane :)

1

Poczytaj o obliczeniach symbolicznych.

1

Wykonaj kopię drzewa pierwszego wyrażenia oraz kopię drugiego. Połącz obydwa drzewa w jedno dodając im nowego, wspólnego rodzica - w podanym przykładzie będzie to operacja mnożenia.

0

adf@ Wybór ostatecznie padł na drzewko, to chyba najlepsze rozwiązanie.
Winterfresh@ dzięki za podrzucenie tematu, przydał się yacas - idealnie do gmerania w kodzie.

0
cx3 napisał(a):

Wybór ostatecznie padł na drzewko
Pisałeś, że już masz działające drzewko.

????

0

Tak, w osobnej klasie. Drzewo to służy do obliczania wyrażenia liczbowego, czyli kiedy wszystkie zmienne są zamienione na liczby. Okazuje się, że po kilku modyfikacjach pomocniczych struktur danych, drzewo to może całkiem dobrze przechowywać także i wyrażenie składające się z symboli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1