Пример #1
0
        /// <summary>
        /// <para>
        /// To determine the sequence of actions: execution priority is medium
        /// </para>
        /// <para>
        /// Medium priority operations: multiplication, division, moduloDivision
        /// </para>
        /// </summary>
        private UniversalOperation ParsingAnExpression_MediumPriority()
        {
            UniversalOperation result = ParsingAnExpression_HighPriority();

            while (true)
            {
                //You can use this for multiplicatio, division, moduloDivision

                if (MatchSearch('×') || MatchSearch('*'))
                {
                    result = new Multiply(result, ParsingAnExpression_HighPriority());
                }
                else if (MatchSearch('%'))
                {
                    result = new ModuleDivision(result, ParsingAnExpression_HighPriority());
                }
                else if (MatchSearch('÷'))
                {
                    result = new Division(result, ParsingAnExpression_HighPriority());
                }

                /*else if(MatchSearch('¹'))
                 * {
                 *  result = new PartOfTheWhole(result, ParsingAnExpression_HighPriority());
                 * }*/
                else
                {
                    return(result);
                }
            }
        }
Пример #2
0
        public double Calculate(string curExp)
        {
            position           = 0;
            _currentExpression = curExp.ToLower().Replace(" ", "").Replace("\t", "").Replace("\n", "");
            if (_currentExpression.Length == 0)
            {
                throw new Exception("You must enter an expression");
            }
            UniversalOperation result = ParsingAnExpression_LowPriority();

            LastValidation();
            return(result.Operation());
        }
Пример #3
0
        private UniversalOperation ParsingAnExpression_HighPriority()
        {
            UniversalOperation result = ParsingAnExpression_VeryHighPriority();

            while (true)
            {
                if (MatchSearch('^'))
                {
                    result = new Pow(result, ParsingAnExpression_HighPriority());
                }
                else
                {
                    return(result);
                }
            }
        }
Пример #4
0
        /// <summary>
        /// To find the percentage of a number
        /// </summary>
        /// <returns>
        /// Percentage of number
        /// </returns>
        public double CalcPercentage(string currentNumber, string currentExpression)
        {
            //Calculating the number from which to find the percentage
            this.currentExpression = currentExpression;
            pos = 0;
            UniversalOperation number = ParsingAnExpression_LowPriority();

            //Calculate the percentage which to find
            this.currentExpression = currentNumber;
            pos = 0;
            UniversalOperation percent = ParsingAnExpression_LowPriority();

            //Calculating the percentage of a number
            UniversalOperation result = new Multiplication(new Division(number, new Number(100)), percent);

            return(result.Operation());
        }
Пример #5
0
        /// <summary>
        /// To find the percentage of a number
        /// </summary>
        /// <returns>
        /// Percentage of number
        /// </returns>
        #endregion

        #region Private methods

        /// <summary>
        /// <para>
        /// To determine the sequence of actions: execution priority is low
        /// </para>
        /// <para>
        /// Low priority operations: addition, subtraction
        /// </para>
        /// </summary>
        private UniversalOperation ParsingAnExpression_LowPriority()
        {
            UniversalOperation result = ParsingAnExpression_MediumPriority();

            while (true)
            {
                if (MatchSearch('+'))
                {
                    result = new Addition(result, ParsingAnExpression_MediumPriority());
                }
                else if (MatchSearch('-'))
                {
                    result = new Subtraction(result, ParsingAnExpression_MediumPriority());
                }
                else
                {
                    return(result);
                }
            }
        }
Пример #6
0
        /// <summary>
        /// <para>
        /// To determine the sequence of actions: execution priority is medium
        /// </para>
        /// <para>
        /// Medium priority operations: multiplication, division
        /// </para>
        /// </summary>
        private UniversalOperation ParsingAnExpression_MediumPriority()
        {
            UniversalOperation result = ParsingAnExpression_HighPriority();

            while (true)
            {
                if (MatchSearch('×'))
                {
                    result = new Multiplication(result, ParsingAnExpression_HighPriority());
                }
                else if (MatchSearch('÷') || MatchSearch('/'))
                {
                    result = new Division(result, ParsingAnExpression_HighPriority());
                }
                else
                {
                    return(result);
                }
            }
        }
Пример #7
0
        /// <summary>
        /// <para>
        /// To determine the sequence of actions: execution priority is medium
        /// </para>
        /// <para>
        /// Medium priority operations: multiplication, division, moduloDivision
        /// </para>
        /// </summary>
        private UniversalOperation ParsingAnExpression_MediumPriority()
        {
            UniversalOperation result = ParsingAnExpression_HighPriority();

            while (true)
            {
                //You can use this for multiplicatio, division, moduloDivision

                if (MatchSearch('×') || MatchSearch('*'))
                {
                }
                else if (MatchSearch('%'))
                {
                }
                else if (MatchSearch('/') || MatchSearch('÷'))
                {
                }
                else
                {
                    return(result);
                }
            }
        }
Пример #8
0
 public Pow(UniversalOperation leftArg, UniversalOperation rightArg) : base(leftArg, rightArg)
 {
 }
Пример #9
0
 public Sqr(UniversalOperation sqr) : base(sqr)
 {
 }
Пример #10
0
 public Subtraction(UniversalOperation leftArg, UniversalOperation rightArg) : base(leftArg, rightArg)
 {
 }
Пример #11
0
 public Exponentiation(UniversalOperation number, UniversalOperation power) : base(number, power)
 {
 }
Пример #12
0
 public Sqrt(UniversalOperation sqrt) : base(sqrt)
 {
 }
Пример #13
0
 public BinaryOperation(UniversalOperation leftArg, UniversalOperation rightArg)
 {
     this.leftArg  = leftArg;
     this.rightArg = rightArg;
 }
Пример #14
0
 public UnaryOperation(UniversalOperation arg)
 {
     this.arg = arg;
 }
Пример #15
0
 public Cosine(UniversalOperation Argument) : base(Argument)
 {
 }
Пример #16
0
 public ModuleDivision(UniversalOperation leftArg, UniversalOperation rightArg) : base(leftArg, rightArg)
 {
 }
Пример #17
0
 public Tangent(UniversalOperation Argument) : base(Argument)
 {
 }
Пример #18
0
 public Sinus(UniversalOperation Argument) : base(Argument)
 {
 }
Пример #19
0
 public Negation(UniversalOperation negate) : base(negate)
 {
 }
Пример #20
0
 public RootExtraction(UniversalOperation root) : base(root)
 {
 }
Пример #21
0
 public Sqrt(UniversalOperation Argument) : base(Argument)
 {
 }
Пример #22
0
 public Addition(UniversalOperation leftArg, UniversalOperation rightArg) : base(leftArg, rightArg)
 {
 }
Пример #23
0
 public Exp(UniversalOperation Argument) : base(Argument)
 {
 }
Пример #24
0
 public Multiply(UniversalOperation leftArg, UniversalOperation rightArg) : base(leftArg, rightArg)
 {
 }
Пример #25
0
 public PartOfTheWhole(UniversalOperation PartOfTheWhole) : base(PartOfTheWhole)
 {
 }