Пример #1
0
        public double PerformCalculations(string input)
        {
            Helpers.ValidateInput(input);

            //Operacje wykonywane są w optymalny sposób.
            //Skoro nie ma nawiasów to dzielenie można wykonać jako pierwsze, ponieważ dzielna zawsze jest jedną liczbą
            try
            {
                input = PerformCalculationForSpecificOperator(input, '/');
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            input = PerformCalculationForSpecificOperator(input, '*');

            //Należy przetworzyć string w celu zamiany odejmowania na dodawanie wartości ujemnych
            input = Helpers.ConvertSubstractionToAdditionNegativeValues(input);
            input = PerformCalculationForSpecificOperator(input, '+');

            double result = input[0].Equals('|')
                ? Convert.ToDouble(input.TrimStart('|')) * -1
                : Convert.ToDouble(input);

            //Dokładność wyniku do 3 miejsca po przecinku
            return(Math.Round(result, 3));
        }