RomanCalculatorLibrary.ArithmeticExpressionParser.InitializeListOfElements C# (CSharp) Method

InitializeListOfElements() public method

public InitializeListOfElements ( string reversePolishSignature ) : List
reversePolishSignature string
return List
        public List<string> InitializeListOfElements(string reversePolishSignature)
        {
            var listElementsOfExpression = new List<string>();
            const char terminalSign = '$';

            for (var i = 0; i < reversePolishSignature.Length; i++)
            {
                if (reversePolishSignature[i] == terminalSign && i != reversePolishSignature.Length - 1)
                {
                    var currentRomanNumber = ParseCurrentRomanNumber(ref i, reversePolishSignature, terminalSign);
                    var arabicNumber = _converterOfNumbers.ConvertRomanNumberToArabic(currentRomanNumber).ToString();
                    listElementsOfExpression.Add(arabicNumber);
                }
                else if (IsSignOfOperation(reversePolishSignature[i].ToString()))
                {
                    listElementsOfExpression.Add(reversePolishSignature[i].ToString());
                }
            }

            return listElementsOfExpression;
        }

Usage Example

Example #1
0
        private int GetResultOfCalculationInArabicFormat(string reversePolishSignature)
        {
            var stack = new Stack <string>();
            var resultOfCurrentOperation = 0;
            var listElementsOfExpression = _arithmeticExpressionParser.InitializeListOfElements(reversePolishSignature);

            foreach (var elementOfExpression in listElementsOfExpression)
            {
                if (!ArithmeticExpressionParser.IsSignOfOperation(elementOfExpression))
                {
                    stack.Push(elementOfExpression);
                }
                else
                {
                    resultOfCurrentOperation = CalculateCurrentOperation(stack, elementOfExpression, resultOfCurrentOperation);
                    stack.Push(resultOfCurrentOperation.ToString());
                }
            }
            return(int.Parse(stack.Pop()));
        }