public static int Calculate(string expression) { Reset(); _expression = ParseExpression(expression); while (_expression.Size() != 0) { var curVal = _expression.Pop(); switch (curVal) { case " ": continue; break; case "+": Sum(); break; case "*": Mul(); break; case "=": return(_currentResult.Pop()); default: _currentResult.Push(int.Parse(curVal)); break; } } return(_currentResult.Pop()); }
public static bool Parse(string brackets) { Task6.Stack <char> bracketsStack = new Task6.Stack <char>(); Task6.Stack <bool> stack = new Task6.Stack <bool>(); // Проверяем что правых скобочек сбалансированное количество foreach (var bracket in brackets) { bracketsStack.Push(bracket); } while (bracketsStack.Size() != 0) { while (bracketsStack.Peek() == ')') { bracketsStack.Pop(); stack.Push(true); } while (bracketsStack.Peek() == '(') { bracketsStack.Pop(); stack.Pop(); } } for (int i = 0; i < stack.Size(); i++) { return(false); } // Проверяем что левых скобочек сбалансированное количество bracketsStack = new Task6.Stack <char>(); stack = new Task6.Stack <bool>(); for (var index = brackets.Length - 1; index >= 0; index--) { var bracket = brackets[index]; bracketsStack.Push(bracket); } while (bracketsStack.Size() != 0) { while (bracketsStack.Peek() == '(') { bracketsStack.Pop(); stack.Push(true); } while (bracketsStack.Peek() == ')') { bracketsStack.Pop(); stack.Pop(); } } for (int i = 0; i < stack.Size(); i++) { return(false); } // Если всех скобочек сбалансированно то true return(true); }