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)); }