Пример стека: вычисление значения формулы - EcsFlash/DataTypes GitHub Wiki

Исходный код - тут(не могу быть точно уверен в правильной работе кода, поскольку у меня не работает преобразование в постфиксную запись(upd - работает))

Я использовал всего 1 стек, хотя можно и возможно нужно использовать 2 стека.

Использую функцию преобразования в постфиксную запись, получаю строку. Циклом прохожусь по ней, если встречаю число, то кидаю его в стек, иначе, в зависимости от типа оператора, выполняю арифметические операции(я удаляю 2 последних операнда, и закидываю в стек их результат)

#include "InfixToPostfix.cpp"
#include "StackList.h"
using namespace std;

inline int Calculator_formula()//предполагаем, что подается заведомо верная строка(иначе можно писать до посинения)
{
	StackList<int> stack;
	string str = InfixToPostfix();
	for (int i = 0;i < (int)str.length();i++)
	{
		if (str[i] != '+' && str[i] != '-' && str[i] != '/' && str[i] != '*') {
			stack.addElem(str[i] - '0');
		}
		else if(!stack.isEmpty())
		{
			int sum = stack.peek();
			stack.removeElem();
			switch (str[i])
			{
			case('+'):
				sum += stack.peek();
				stack.removeElem();
				break;
			case('-'):
				sum -= stack.peek();
				stack.removeElem();
				break;
			case('*'):
				sum *= stack.peek();
				stack.removeElem();
				break;
			case('/'):
				sum /= stack.peek();
				stack.removeElem();
				break;
			}
			stack.addElem(sum);
		}
	}
	return stack.peek();
}
⚠️ **GitHub.com Fallback** ⚠️