using System.Collections.Generic;
public static void Main(string[] args){
String str = "5+((5+2)*4)-3";
String result=LengyelFormaKonvertalas(str);
Console.WriteLine(evalRPN(result));
static String LengyelFormaKonvertalas(String input){
Stack<char> stack = new Stack<char>();
String str = input.Replace(" ", string.Empty);
StringBuilder formula = new StringBuilder();
for (int i = 0; i < str.Length; i++){
while(stack.Count>0 && stack.Peek() != '(')
formula.Append(stack.Pop());
} else if (IsOperandus(x)){
} else if (IsOperator(x)) {
while(stack.Count>0 && stack.Peek() != '(' && Prior(x)<=Prior(stack.Peek()) )
formula.Append(stack.Pop());
formula.Append(stack.Pop());
return formula.ToString();
static bool IsOperator(char c){
return (c=='-'|| c=='+' || c=='*' || c=='/');
static bool IsOperandus(char c){
return (c>='0' && c<='9' || c=='.');
static int Prior(char c){
throw new ArgumentException("Rossz parameter");
private static int evalRPN(
if (tokens == null || tokens.Length < 3) return 0;
var stack = new Stack<int>();
for (var i = 0; i<tokens.Length; i++){
if (!operations.Contains(tokens[i].ToString())) {
stack.Push(Int32.Parse(tokens[i].ToString()));