Obliczanie wyrażeń arytmetycznych

0

Mam do napisania program w Javie, za który w ogóle nie wiem jak się zabrać. Bardzo proszę o pomoc:

Wyrażenia arytmetyczne można reprezentować jako drzewa, gdzie w liściach pamiętane są liczby, a w węzłach symbole operacji arytmetycznych. Zaimplementuj w Javie odpowiednie klasy reprezentujące węzły i liście takiego drzewa jako podklasy klasy Wyrażenie.
W każdej klasie zdefiniuj metodę public int oblicz(); obliczającą wartość wyrażenia reprezentowanego przez obiekt. Zdefiniuj odpowiednie konstruktory. Przyjmij, że w liściach mogą być zarówno stałe liczbowe jak i zmienne. Przyjmij,
że wartości zmiennych są przechowywane np. tablicy haszującej (możesz wykorzystać tu klasy biblioteczne).

Uwaga: nie jest konieczne parsowanie wyrażeń, wyrażenia można budować np. tak:
wyrazenie = new Dodaj(new Stala(4), new Zmienna("x"))

0

google: drzewa AST
Musisz zaimplementować sobie prostą hierarchię klas gdzie masz klasy dziedziczące Expression. Typy proste są liśćmi i ich metoda getValue() zwraca po prostu wartość. "Typy złożone" np. X+Y powinny przechowywać w sobie dwa Expression oraz okreslać typ operacji (mnożenie, dzielenie, dodawanie, odejmowanie) i ich getValue() zwraca operacja(expression1.getValue(),expression2.getValue())
Parser do takiego czegoś można łatwo wygenerowac za pomocą jakiegoś antLR

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