• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kalkulator RPN (odwrotna notacja polska)

+6 głosów
2,769 wizyt
pytanie zadane 12 kwietnia 2015 w JavaScript, jQuery, AJAX przez FilipM Początkujący (420 p.)
edycja 12 kwietnia 2015 przez FilipM
Witajcie!
Mam problem z zadaniem, w którym muszę stworzyć program liczący wyrażenie zapisane w RPN dla czterech możliwych działań : dodawanie, odejmowanie, mnożenie i dzielenie. Na przykład:

Wejście:

2 2 * 4 +

11 2 - 4 +

 

Wyjście:

8

13

Czy ktoś rozwiązywał kiedyś coś podobnego lub ma pomysł jak do tego sprytnie podejść :) ?

Można jakoś szybko skonwertować string w postaci '2 4 13 + 9' do zmiennej array, żeby wyglądała tak: [2, 4, 13,+,9] ?

3 odpowiedzi

0 głosów
odpowiedź 12 kwietnia 2015 przez daan Pasjonat (17,860 p.)
Nie znam javascriptu, ale w C++ robiłem to robiłem tak, że pobierałem znak, jak była to liczba to wrzucałem ją na stos a jak operator ściągałem 2 poprzednie liczby ze stosu i wykonywałem operacje pierwsza 'operator' druga a wynik wrzucałem ponownie na stos :) i tak w kółko do momentu aż zabrakło znaków w łańcuchu początkowym :P
0 głosów
odpowiedź 12 kwietnia 2015 przez marqos12 Obywatel (1,840 p.)
Ja w delphi raz popełniłem taki kalkulator i jedyna opcja na jaką wpadłem od tamtego czasu to zastosowanie flag i funkcji liczącej. Chodzi o to, że najpierw podajesz liczbę, potem dajesz znak i zostaje podniesiona flaga tego znaku, potem idzie kolejna liczba i gdy podajesz następny znak działania to najpierw wykonuje się w funkcji to, co znaczyła poprzednia flaga, później flaga jest zerowana i na jej miejsce wchodzi flaga z nowego znaku. Nie wiem czy konkretnie o to chodzi ale flagi to rozwiązanie na znaczną część problemów logicznych :)
0 głosów
odpowiedź 12 kwietnia 2015 przez nefil1m Stary wyjadacz (10,640 p.)

Ja odpowiem tylko na ostatnie pytanie:
http://www.w3schools.com/jsref/jsref_split.asp

split() załatwi sprawę ale ma ten minus, że jeśli zrobisz 

var array = string.split(" ");

a będzie więcej spacji to dostaniesz 'zepsutą' tablicę. Lepiej użyć regexpa

var array = string.split(/\s*/);
komentarz 12 kwietnia 2015 przez nefil1m Stary wyjadacz (10,640 p.)
Na wikipedii masz nawet rozpisany algorytm na to:

http://pl.wikipedia.org/wiki/Odwrotna_notacja_polska

Podobne pytania

0 głosów
1 odpowiedź 96 wizyt
pytanie zadane 7 grudnia 2018 w C i C++ przez Karitto Użytkownik (610 p.)
0 głosów
2 odpowiedzi 138 wizyt
pytanie zadane 21 października 2018 w Matematyka, fizyka, logika przez Szymon137 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 28 stycznia 2018 w C i C++ przez elzulninho Nowicjusz (120 p.)
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

62,290 zapytań

108,413 odpowiedzi

226,327 komentarzy

34,962 pasjonatów

Przeglądających: 247
Pasjonatów: 13 Gości: 234

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...