Пример #1
0
        private void AccumulateDigits(bool isInput, string msg)
        {
            if (isInput)
            {
                calcState = CalcState.AC_DGTS;

                tempNumber += msg;
                displayMsg(tempNumber);
            }
            else
            {
                if (Rules.IsPrimeSum(msg))
                {
                    Compute(true, msg);
                }
                if (Rules.IsChangeSign(msg))
                {
                    if (double.Parse(tempNumber) > 0)
                    {
                        tempNumber = "-" + tempNumber;
                    }
                    else
                    {
                        tempNumber = tempNumber.Substring(1, tempNumber.Length - 2);
                    }

                    displayMsg(tempNumber);

                    AccumulateDigits(false, " ");
                }

                if (Rules.IsDigit(msg))
                {
                    AccumulateDigits(true, msg);
                }
                else if (Rules.IsOperator(msg))
                {
                    Compute(true, msg);
                }
                else if (Rules.IsEqualSign(msg))
                {
                    Result(true, msg);
                }
                if (Rules.IsSeparator(msg))
                {
                    AccumulateDigitsWithDecimal(true, msg);
                }
                if (Rules.IsBackSpace(msg))
                {
                    if (tempNumber.Length != 1)
                    {
                        tempNumber = tempNumber.Substring(0, tempNumber.Length - 1);
                        displayMsg(tempNumber);
                        AccumulateDigits(false, " ");
                    }

                    else
                    {
                        tempNumber = tempNumber.Substring(0, tempNumber.Length - 1);
                        displayMsg("0");
                        AccumulateDigits(false, " ");
                    }
                }
            }
        }