private string[] ToPolish() { var output = new string[_parsed.Length]; int i = 0; var stack = new Stack<string>(); foreach (var str in _parsed) { if (str == null) break; double x; //почему-то дробные числа записанные через точку - не парсит //если писать через запятую - все в порядке if (double.TryParse(str, out x)) { output[i++] = str; } else { if (str == "(") { stack.Push(str); } else if (str == ")") { while (stack.Top() != "(") output[i++] = stack.Pop(); stack.Pop(); } else if (str == "*" || str == "/" || str == "+" || str == "-" || str == "^") { while (!stack.Empty() && GetPriority(str) <= GetPriority(stack.Top())) { output[i++] = stack.Pop(); } stack.Push(str); } } } while (!stack.Empty()) { output[i++] = stack.Pop(); } return output; }