Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }