/// <summary> /// Will solve problem with minus before brackets and on another locations /// </summary> /// <param name="equation">string containing equation</param> /// <returns>equation</returns> private static string FixMinusOperator(string equation) { // get all locations of minus char in equation List <int> indexes = StringControl.GetAllIndexesOf(equation, Strings.Minus); // check all minuses (must be checking from the end because of adding to equation string on index) // add plus to equation if needed for (int index = indexes.Count - 1; index >= 0; --index) { if (indexes[index] > 0 && !Operators.IsLastCharOfTwoArgumentsOperator(equation[indexes[index] - 1])) { equation = equation.Insert(indexes[index], Strings.Plus); } } return(equation); }
/// <summary> /// Will move factorial operator before its argument for easier tree creating /// </summary> /// <param name="equation">string containing equation</param> /// <returns>equation</returns> private string MoveFactorialOperatorForCreatingTree(string equation) { List <int> indexes = StringControl.GetAllIndexesOf(equation, Strings.Factorial); //for (int index = indexes.Count - 1; index >= 0; --index) // equation = equation.Remove(indexes[index], Strings.Factorial.length) // .Insert(indexes[index], ")") // .Insert(GetStartingIndexOfNumberOrStringInsideBracketOnIndex(equation, indexes[index] - 1), "(" + Strings.Factorial); foreach (int index in indexes) { equation = equation.Remove(index, Strings.Factorial.Length); equation = equation.Insert(GetStartingIndexOfNumberOrStringInsideBracketOnIndex(equation, index - 1), Strings.Factorial); } return(equation); }