// создание из правильно введённой формулы вида x+y/5 // нужного списка // возможные ограничения - кол-во элементов в нижнем уровне (8*f, но не 1*1*1) // TODO: сделать нормальный нижний уровень public Expression(String inputString) { String[] varsAndConsts = this.TokenizeString(inputString); for (int i = 0; i < inputString.Length; i++) { if (inputString[i].Equals('+') || inputString[i].Equals('-')) { value = varsAndConsts[0]; int tmp; // сюда записывается результат из int.TryParse code = int.TryParse(varsAndConsts[0], out tmp) ? Code.CONSTANT : Code.VARIABLE; this_level = new Expression(Code.OPERATOR, inputString[i].Equals('+') ? "+" : "-"); this_level.this_level = new Expression(inputString.Substring(i + 1)); i = inputString.Length; } else if (inputString[i].Equals('*') || inputString[i].Equals('/')) { code = Code.LOW_LEVEL; int tmp; // сюда записывается результат из int.TryParse low_level = new Expression(int.TryParse(varsAndConsts[0], out tmp) ? Code.CONSTANT : Code.VARIABLE, varsAndConsts[0]); low_level.this_level = new Expression(Code.OPERATOR, inputString[i].Equals('*') ? "*" : "/"); low_level.this_level.this_level = new Expression(inputString.Substring(i + 1)); i = inputString.Length; } if (varsAndConsts.Length == 1) { value = varsAndConsts[0]; int tmp; // сюда записывается результат из int.TryParse code = int.TryParse(varsAndConsts[0], out tmp) ? Code.CONSTANT : Code.VARIABLE; } } }
static void Main(string[] args) { Expression aa = new Expression(Console.ReadLine()); Console.WriteLine(aa.ExpressionToBracketView()); Console.ReadKey(); }