Beispiel #1
0
        public List <Calculation> SplitToCalculations(ObjCalcScript cspt)
        {
            List <Calculation> calculations = prs
                                              .Divide(cspt.CalculationScriptText, breakPairs, ';', bracketPairs)
                                              .Select(x => new Calculation(x, SplitToProperties(x)))
                                              .ToList()
            ;

            return(calculations);
        }
Beispiel #2
0
        public void DoMath()
        {
            switch (selectOperator)
            {
            case "+":
                Console.WriteLine(adder.Add());
                break;

            case "-":
                Console.WriteLine(subtractor.Subtract( ));
                break;

            case "*":
                Console.WriteLine(multiplier.Multiply());
                break;

            case "/":
                Console.WriteLine(divider.Divide());
                break;

            case "^":
                Console.WriteLine(exponenter.Exponent());
                break;

            default:
                break;
            }
        }
Beispiel #3
0
        public decimal Calculate(string text)
        {
            var query = _queryParser.Parse(text);

            var result = 0m;

            switch (query.Operation)
            {
            case "x":
                result = _multiplier.Multiply(query.FirstNumber, query.SecondNumber);
                break;

            case "+":
                result = _adder.Add(query.FirstNumber, query.SecondNumber);
                break;

            case "-":
                result = _subtractor.Subtract(query.FirstNumber, query.SecondNumber);
                break;

            case "/":
                result = _divider.Divide(query.FirstNumber, query.SecondNumber);
                break;
            }

            return(result);
        }
        public Decomposed Execute(
            Factor factors,
            IDivider divider,
            dynamic algorithm,
            IUserAlgorithmStrategyProvider strategtProvider
            )
        {
            factors = Normalize(factors);
            var decomposed = new Decomposed();

            decomposed.Factors.Add(factors);

            var continueFlag = true;

            while (continueFlag)
            {
                continueFlag = false;
                var freeTermFactors = (List <int>)GetNumberFactors(decomposed.Factors.Last().Terms.Where(x => x.SymbolsPower == 0).Select(term => term.Number).FirstOrDefault(),
                                                                   algorithm,
                                                                   strategtProvider
                                                                   );

                freeTermFactors.ForEach(coefficent =>
                {
                    var dividedPart = divider.Divide(decomposed.Factors.Last(), -coefficent);

                    if (dividedPart != null)
                    {
                        Console.WriteLine(decomposed);

                        var newdividerFactor   = new Factor();
                        newdividerFactor.Terms = new List <Term>()
                        {
                            new Term
                            {
                                Number       = 1,
                                Sign         = Sign.Plus,
                                Symbol       = 'x',
                                SymbolsPower = 1
                            },
                            new Term
                            {
                                Number       = Math.Abs(coefficent),
                                Sign         = (coefficent >= 0) ? Sign.Minus : Sign.Plus,
                                SymbolsPower = 1
                            }
                        };

                        decomposed.Factors.Insert(0, newdividerFactor);
                        decomposed.Factors[decomposed.Factors.Count() - 1] = dividedPart;
                        continueFlag = true;
                    }
                });
            }
            return(decomposed);
        }
Beispiel #5
0
        /// <summary>
        /// This function loops through the items of the collection of values and performs the division or attemps to divide.
        /// The result returned will be displayed by the print delegate, which is set by the caller.
        /// </summary>
        /// <param name="divider"></param>
        /// <param name="print"></param>
        public void RunDivider(IDivider divider, Delegates.DisplayDelegate display)
        {
            string returnResult;

            display("There are " + _nObjects.Count() + " elements in the collection.");

            foreach (NObject nObject in _nObjects)
            {
                returnResult = divider.Divide(nObject);
                display(returnResult);
            }
        }
Beispiel #6
0
 public T Divide(T valueX, T valueY)
 {
     return(_divider.Divide(valueX, valueY));
 }