Przeczytaj
Przeanalizuj prezentację przedstawiającą kolejne kroki implementacji rekurencyjnego algorytmu konwertującego wyrażenie arytmetyczne zapisane za pomocą notacji infiksowej na ONPONP. Następnie zastanów się, dlaczego program działa jedynie w sytuacji, gdy wyrażenie arytmetyczne zawiera liczby naturalne. Jak wyglądałby algorytm, który umożliwiałby wprowadzanie liczb całkowitych bądź rzeczywistych?
Specyfikacja problemu:
Dane:
klasyczna
– łańcuch znaków przechowujący wyrażenie arytmetyczne zapisane w notacji infiksowej, pozbawione spacji, gdzie każde z działań wydzielone jest parą nawiasówparą nawiasów
Wynik:
wyrażenie arytmetyczne zamienione na ONP
Napisz program, który przekształci wyrażenie arytmetyczne zapisane w notacji infiksowej (zakładamy, że wyrażenie zawiera pełne nawiasowaniepełne nawiasowanie, występują w nim wyłącznie liczby naturalne oraz operatory jednoznakowe) do postaci ONP. Przetestuj działanie programu dla wyrażenia arytmetycznego (((27/5)-(5*23))+((26‑4)-(23^24)))
.
Specyfikacja problemu:
Dane:
klasyczna
– wyrażenie arytmetyczne w notacji infiksowej z pełnym nawiasowaniem; łańcuch znaków
Wynik:
wyrażenie arytmetyczne w ONP
W wyrażeniu zastosowaliśmy operator ^
. Wykorzystujemy go jako operator potęgowania.
Słownik
sposób zapisu dwuargumentowego wyrażenia arytmetycznego, w którym operator działania zostaje zapisany między operandami, np. 2 + 2
sposób zapisu wyrażenia arytmetycznego, w którym operator umieszczony jest przed operandami, np. + 2 2
sposób zapisu wyrażenia arytmetycznego, w którym operator umieszczony jest za operandami, np. 2 2 +
liczba, na której wykonywane jest działanie
Dla wyrażenia arytmetycznego:
liczby 27 oraz 5 to operandy, a znak mnożenia jest operatorem
szczególne ustawienie nawiasów w wyrażeniu arytmetycznym w notacji infiksowej; dzięki niemu każde działanie ma jednoznacznie określone dwa operandy za pomocą ujęcia w nawiasy, a także całe działanie jest objęte nawiasem, np. (a+(b⋅c))
dynamiczna struktura danych, w której elementy pobierane są z wierzchołka i odkładane na wierzchołek; struktura typu LIFO (ang. Last‑In, First‑Out – ostatni na wejściu, pierwszy na wyjściu)