Mam do zrobienia zadanie w javie, której nigdy nie używałem i nie do końca wiem jak sobie z nim poradzić póki co zrobiłem.
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"))
Zaprogramuj w każdej klasie metodę String toString() zwracającą wyrażenie w postaci
napisu.
class Dodaj implements Wyrazenie
{
Wyrazenie a;
Wyrazenie b;
public Dodaj (Wyrazenie a, Wyrazenie b) { this.a = a; this.b = b; }
public int Oblicz() { return a.Oblicz() + b.Oblicz(); }
public String toString() { return "(" + a + "+" + b + ")"; }
}
Mam też resztę operacji ale nie wiem jak zrobić to drzewo i obsługiwać zmienne.