void AccumulateDigitsWithDecimal(string msg, bool isInput) { if (isInput) { calcState = CalcState.AccumulateDigitsWithDecimal; tempNumber += msg; changeTextDelegate.Invoke(tempNumber); } else { if (Rules.IsDigit(msg)) { AccumulateDigitsWithDecimal(msg, true); } else if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) { Compute(msg, true); } else if (Rules.IsEqualSign(msg)) { Result(msg, true); } else if (Rules.IsC(msg)) { Zero(msg, true); } else if (Rules.IsCE(msg)) { tempNumber = ""; AccumulateDigits(tempNumber, true); } } }
private void Result(bool isInput, string msg) { if (isInput) { calcState = CalcState.RESULT; Calculate(); displayMsg(resNumber); } else { if (Rules.IsZero(msg)) { Zero(true, msg); } else if (Rules.IsNonZeroDigit(msg)) { tempNumber = ""; operation = ""; AccumulateDigits(true, msg); } else if (Rules.IsOperator(msg)) { operation = ""; tempNumber = resNumber; Compute(true, msg); } else if (Rules.IsEqualSign(msg)) { Calculate(); displayMsg(resNumber); } } }
private void AccumulateDigitsWithDecimal(bool isInput, string msg) { if (isInput) { calcState = CalcState.AC_DGTS_WDCML; if (!tempNumber.Contains(",")) { tempNumber += ","; } displayMsg(tempNumber); } else { 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.IsBackSpace(msg)) { tempNumber = tempNumber.Substring(0, tempNumber.Length - 2); AccumulateDigits(false, msg); } } }
void Zero(bool isInput, string msg) { if (isInput) { calcState = CalcState.Zero; tempNumber = "0"; resultNumber = "0"; displayMsg(tempNumber); } else { if (Rules.IsNonZeroDigit(msg)) { resultNumber = ""; tempNumber = ""; AccumulateDigit(true, msg); } else if (Rules.IsOperator(msg)) { resultNumber = "0"; Compute(true, msg); } else if (Rules.IsEqualSign(msg)) { Result(true, msg); } else if (Rules.IsStrange(msg)) { Compute2(true, msg); } else if (Rules.IsClear(msg)) { Zero(true, msg); } else if (Rules.IsDot(msg)) { AccumulateDigit(true, msg); } } }
void AccumulateDigit(bool isInput, string msg) { if (isInput) { calcState = CalcState.AccumulateDigit; tempNumber += msg; displayMsg(tempNumber); } else { if (Rules.IsDigit(msg)) { AccumulateDigit(true, msg); } else if (Rules.IsOperator(msg)) { Compute(true, msg); } else if (Rules.IsEqualSign(msg)) { Result(true, msg); } } }
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, " "); } } } }