В универе нас учили превращать традиционное математическое выражение в польскую постфиксную запись, а потом работать с этой записью при помощи стека.
Например, 2*2/9+5-8 в польской записи будет так:
2 2 * 9 / 5 + 8 -
Операнды идут в том же порядке, что и в исходном выражении.
А операции - в порядке их выполнения, причем всегда после своих операндов.
Разбор идет слева направо.
Если видим операнд - кладем его в стек.
Если видим операцию - достаем из стека два операнда, применяем к ним операцию, результат кладем в стек.
По окончании разбора в стеке будет одно число - значение выражения.
Для примера разберем польскую запись в вашем случае:
2 2 * 9 / 5 + 8 -
2 - кладем в стек.
[ 2
2 - тоже кладем в стек.
[ 2 2
* - достаем из стека 2 и 2, считаем 2 * 2 = 4, кладем в стек.
[ 4
9 - кладем в стек
[ 4 9
/ - достаем из стека 9 и 4, считаем 4 / 9 = 0,4444, кладем в стек.
[ 0,4444
5 - кладем в стек.
[ 0,4444 5
+ - достаем из стек 5 и 0,4444, считаем 0,4444 + 5 = 5,4444, кладем в стек.
[ 5,4444
8 - кладем в стек.
[ 5,4444 8
- - достаем из стека 8 и 5,4444, считаем 5,4444 - 8 = -2,5556, кладем в стек.
[ -2,5556
Разбор окончен. Ответ: -2,5556.
А вот как на основе выражения построить польскую запись - это отдельная история :)