Wyrażenie na ONP

0

Witam. Mam pytanie. Jak zmienić zwyczajne wyrażenie arytmetyczne typu "22*33+A" na postać odwrotnej notacji polskiej? Program działa mi dla liczb, które są jednocyfrowe, ale dla wielocyfrowych (>9) program je rozdziela i wyrażenie to traci sens. Najlepiej by wynik takiej 'konwersji' nie był stringiem tylko każda składowa wyrażenia ONP była np. osobnym indeksem w tablicy. Chodzi mi o takie działanie jak na tej stronie: http://www.mathblog.dk/tools/infix-postfix-converter/.
Pozdrawiam

0

Odwrotna notacja polska - gotowiec

Chyba, ze potrzebujesz po prostu biblioteki do wyrażeń matematycznych to są w necie dobre gotowce.

0

Zresztą, skoro Piszesz, że Masz algorytm, to Zrób tak:

  • Wyrażenie do konwersji Przyjmujesz jako string;
  • Następnie, metodą replace, Usuwasz wszystkie spacje;
  • Otaczasz spacjami, to co trzeba, nawiasy i operatory pewnie - więc to co pozostanie razem, to będą liczby albo symbole;
  • Usunąć ewentualną spacje na końcu (lub/i na początku), Split spacją teraz i lista do algorytmu konwersji gotowa.

Tak jest, imo, szybciej i przejrzyściej niż pisać lekser/tokenizer, chociaż są pewnie gotowe na necie.

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