@WirusTrojan jeśli tego nigdy nie pisałeś, to to Ci zajmie kilka wieczorów, ale jest jednocześnie dobrze opisane na necie; zacznij na początku od zaimplementowania "pisemnego" dodawania/mnożenia/etc, tj. rozbij sobie każdą liczbę na tablice cyfr, i zaimplementuj algorytm, który wylicza wynik tak jak się w podstawówce na kartce uczyłeś.
Jak to będziesz miał i będzie dobrze działać, to kolejnym krokiem jest parsing/tokenizacja wyrażenia które dostajesz (tego "(1000+22222)*3+4567") na tokeny, tj. listę zrozumiałych dla programu obiektów, gdzie każdy obiekt reprezentuje jedną logiczną część wyrażenia. W przypadku przykładu to by było coś w stylu:
Notacja: typ tokenu, opcjonalny parametr (string)
TOKEN_PARENTHESIS_OPEN
TOKEN_NUMBER, "1000"
TOKEN_OP_ADD
TOKEN_NUMBER, "22222"
TOKEN_PARENTHESIS_CLOSE
TOKEN_OP_MUL
TOKEN_NUMBER, "3"
TOKEN_OP_ADD
TOKEN_NUMBER, "4567"
Mając taką listę tokenów, możesz programowo na nich operować.
I teraz, z uwagi na kolejność operacji, musisz:
1) albo przejść na odwrotną notację polską (RPN), a przynajmniej zbudować drzewo AST (Abstract Syntax Tree) – dowolne z tych pozwoli Ci zacząć w prosty sposób liczyć,
2) albo napisać kilka pętli, gdzie w każdej będziesz znajdować dany typ operacji z większym priorytetem, i podmieniać tokeny na wyniki do skutku, tj:
Przykład:
W pętli pierwszej szukasz wszystkich TOKEN_OP_MUL (oraz _DIV) które
mają TOKEN_NUMBER po obu stronach, np.:
TOKEN_NUMBER, "2"
TOKEN_OP_MUL
TOKEN_NUMBER, "6"
I je zamieniasz in-place na token z wynikiem (tj. zamieniasz
pierwszy number i usuwasz dwa pozostałe tokeny):
TOKEN_NUMBER, "12"
W drugiej pętli robisz to samo dla TOKEN_OP_ADD i TOKEN_OP_SUB.
W trzeciej pętli szukasz wszystkich nawiasów z liczbą w środku, i usuwasz
nawiasy, tj.
TOKEN_PARENTHESIS_OPEN
TOKEN_NUMBER, "1234"
TOKEN_PARENTHESIS_CLOSE
↓
TOKEN_NUMBER, "1234"
I te 3 pętle powtarzasz do póki wielkość listy tokenów != 1
Na końcu będziesz miał jeden token z wynikiem na liście.
Od razu mówię, że to jest trochę hack i jest wolniejsze niż AST/RPN, ale jest też dużo prostsze w implementacji.