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
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.