void Result(bool isInput, string msg) { if (isInput) { currentState = CalcState.Result; Calculate(); CheckCompr(); resultDelegate(resultNumber); } else { if (Rules.IsZero(msg)) { Zero(true, msg); } else if (Rules.IsNonZeroDigit(msg)) { tempNumber = ""; AccumulateDigits(true, msg); } else if (Rules.IsOperator(msg) || Rules.IsXPowerY(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg)) { operation = ""; tempNumber = resultNumber; Compute(true, msg); } else if (Rules.IsSeparator(msg)) { operation = ""; tempNumber = resultNumber; AccumulateDigitsWithDecimal(true, msg); } else if (Rules.IsClearSign(msg)) { Zero(true, msg); } else if (Rules.IsOff(msg)) { Off(true, msg); } else if (Rules.IsEqualSign(msg)) { Result(true, msg); } else if (Rules.IsDivisibleSign(msg)) { Error(true, msg); } } }
void AccumulateDigits(bool isInput, string msg) { if (isInput) { currentState = CalcState.AccumulateDigits; tempNumber += msg; resultDelegate(tempNumber); } else { if (Rules.IsDigit(msg) || Rules.ABCDEF(msg)) { AccumulateDigits(true, msg); } else if (Rules.IsOperator(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg) || Rules.IsXPowerY(msg)) { Compute(true, msg); } else if (Rules.IsEqualSign(msg) && operation.Length > 0) { Result(true, msg); } else if (Rules.IsSeparator(msg)) { AccumulateDigitsWithDecimal(true, msg); } else if (Rules.IsClearSign(msg)) { Zero(true, msg); } else if (Rules.IsOff(msg)) { Off(true, msg); } else if (Rules.IsDivisibleSign(msg)) { Error(true, msg); } else if (Rules.IsCheckComprSign(msg)) { Compute(true, msg); } else if (Rules.IsQuizSign(msg)) { Compute(true, msg); } } }
void Zero(bool isInput, string msg) { if (isInput) { currentState = CalcState.Zero; resultDelegate("0"); msg = ""; tempNumber = ""; resultNumber = ""; operation = ""; } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(true, msg); } else if (Rules.IsSeparator(msg)) { AccumulateDigitsWithDecimal(true, msg); } else if (Rules.IsOff(msg)) { Off(true, msg); } else if (Rules.IsOperator(msg) || Rules.IsRootSign(msg)) { tempNumber = "0"; Compute(true, msg); } else if (Rules.IsDivisibleSign(msg)) { Error(true, msg); } else if (Rules.ABCDEF(msg)) { ABCDEF(true, msg); } } }
void Compute(bool isInput, string msg) { if (isInput) { currentState = CalcState.Compute; if (operation.Length > 0 && (Rules.IsRootSign(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg))) { operation2 = msg; Calculate(); operation2 = ""; } else if (Rules.IsRootSign(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg) || Rules.IsQuizSign(msg)) { operation = msg; if (operation.Length > 0) { Calculate(); resultDelegate(resultNumber); } tempNumber = resultNumber; operation = ""; } else if ((Rules.IsPercentSign(msg) || Rules.IsXPowerY(msg)) && operation.Length > 0) { operation2 = msg; if (tempNumber2.Length == 0) { tempNumber2 = tempNumber; tempNumber = ""; } else if (tempNumber.Length > 0 && tempNumber2.Length > 0) { Calculate(); resultDelegate(tempNumber); } } else { if (operation.Length > 0) { CheckCompr(); resultDelegate(resultNumber); } else { resultNumber = tempNumber; } operation = msg; tempNumber = ""; } } else { if (Rules.IsDigit(msg)) { AccumulateDigits(true, msg); } else if (Rules.IsClearSign(msg)) { Zero(true, msg); } else if (Rules.IsOff(msg)) { Off(true, msg); } else if (Rules.IsOperator(msg) || Rules.IsXPowerY(msg) || Rules.IsSquareSign(msg) || Rules.IsOneOverXSign(msg) || Rules.IsPlusMinus(msg) || Rules.IsDEL(msg)) { Compute(true, msg); } else if (Rules.IsDivisibleSign(msg)) { Error(true, msg); } else if (Rules.IsEqualSign(msg)) { Result(true, msg); } } }