Zasada podstawienia Liskov

Odpowiedz Nowy wątek
2019-03-14 22:15
0

Hej, odczytuje dane z pliku, na które składają się wyrażenia (liczby i operatory) w różnych notacjach, chciałabym utworzyć drzewo binarne na podstawie pobieranych danych i odczytywać odpowiednio wyrażenia w celu otrzymania końcowego wyniku jednakże nie chce łamać zasady liskov i sprawdzać dokładnej klasy obiektu (czy liczba czy operator). Moje pytanie czy jeżeli w polach tych dwóch klas wprowadzę dodatkową zmienną np. priorytet i ustawie dla klasy liczba, np. priorytet=1 dla klasy operator priorytet=0 i będę porównywać ich priorytety za pomocą geta to również złamię zasadę liskov?
Z góry dzięki za odpowiedź!

Pozostało 580 znaków

2019-03-14 23:07
0

Przecież, nie Masz na wejściu żadnych liczb czy operatorów, tylko stringi.


Pozostało 580 znaków

2019-03-15 01:00
0

na podstawie tego co będzie w stringu chce rozdzielić wyrażenie na jakąś liczbę i operator i utworzyć obiekty tych dwóch klas i później obiekty te przechowywać w liście i z listy zbudować drzewo

Pozostało 580 znaków

2019-03-15 01:25
0

Rozumiem, ale można też przyjąć wszystko, jako string i parsować w drzewo na podstwaie porównania, jeśli jest to nawias lewy (if token == '(': make_left_node()) i tak dalej, wtedy problem znika; a rozróznia się dopiero w momencie ewaluowania wyrażenia. Poza tym, wyrażenia w postaci ONP nie parsuje się w drzewo.


Pozostało 580 znaków

2019-03-15 01:34
0

hmm tylko w notacji ONP nie mam w ogóle nawiasów, czyli najpierw byś wpisywał jak leci a dopiero po zamianie na wyrażenie z nawiasami parsował w drzewo? Z tego co się orientowałam to częstszą strukturą jest stos aczkolwiek chciałabym to zrobić na drzewie ;D

Pozostało 580 znaków

2019-03-15 01:43

Acha, chyba nie zrozumiałem dokładnie. Chcesz odczytać wyrażenia, już będące w odpowiednich notacjach, (infixowa, ONP,...) przechować je w drzewach, a potem je z nich wyciągać w celu dalszej obróbki; to nie ma problemu, Utwórz sobie odpowiednie drzewka przechowujące ciągi stringów, np.:
TreeContainer * onp_tree = new TreeContainer...
Wszystkie będą jednego typu, a potem, w zależności, dalsza obróbka. Jakoś tak bym to widział:
Klasa Reader, na przykład, korzystająca z TreeContainer do czytania i przechowywania, potem Parser i Eval (Przy czym akurat parser z wyrażeniem w ONP, nie będzie miał za dużo roboty:)).


edytowany 2x, ostatnio: lion137, 2019-03-15 01:47

Pozostało 580 znaków

2019-03-16 20:36
0

Bardzo, bardzo dziękuję za odpowiedź!

Proszę bardzo!:) - lion137 2019-03-16 23:58

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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

Robot: CCBot