void Zero(string msg, bool isInput) { if (isInput) { calcState = CalcState.Zero; tempNumber = ""; msg = ""; resultNumber = ""; operation = ""; changeTextDelegate("0"); } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(msg, true); } else if (Rules.IsSeparator(msg)) { AccumulateDigitsWithDecimal(msg, true); } else if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) { tempNumber = "0"; Compute(msg, true); } } }
void Result(string msg, bool isInput) { if (isInput) { calcState = CalcState.Result; if (Rules.IsOperation(operation)) { Operation(); } if (Rules.IsOneOperation(operation)) { OneOperation(); } if (Rules.IsPlusMinus(operation)) { PlusMinus(); } if (Rules.IsDelete(operation)) { Delete(); } operation = ""; changeTextDelegate.Invoke(resultNumber); } else { if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) { Compute(msg, true); } else if (Rules.IsNonZeroDigit(msg)) { tempNumber = ""; AccumulateDigits(msg, true); } else if (Rules.IsZero(msg)) { Zero(msg, true); } else if (Rules.IsSeparator(msg)) { operation = ""; tempNumber = resultNumber; AccumulateDigitsWithDecimal(msg, true); } else if (Rules.IsC(msg)) { Zero(msg, true); } else if (Rules.IsCE(msg)) { tempNumber = ""; AccumulateDigits(tempNumber, true); } } }
private void Zero(bool isInput, string msg) { if (isInput) { calcState = CalcState.ZERO; operation = ""; tempNumber = ""; displayMsg("0"); } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(true, msg); } if (Rules.IsSeparator(msg)) { tempNumber = "0"; AccumulateDigitsWithDecimal(true, msg); } } }
void AccumulateDigits(string msg, bool isInput) { if (isInput) { calcState = CalcState.AccumulateDigits; tempNumber += msg; changeTextDelegate.Invoke(tempNumber); } else { if (Rules.IsDigit(msg)) { AccumulateDigits(msg, true); } else if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) { Compute(msg, true); } else if (Rules.IsEqualSign(msg) && operation.Length != 0) { Result(msg, true); } else if (Rules.IsSeparator(msg)) { AccumulateDigitsWithDecimal(msg, true); } else if (Rules.IsC(msg)) { Zero(msg, true); } else if (Rules.IsCE(msg)) { tempNumber = ""; AccumulateDigits(tempNumber, true); } } }
void Zero(string msg, bool isInput) { if (isInput) { calcState = CalcState.Zero; } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(msg, true); } if (Rules.IsSeparator(msg)) { AccumulateDigits(msg, true); } if (Rules.IsMemoryOperation(msg)) { memoryNumberToFirst = true; MemorySave(msg, true); } } }
void AccumulateDigits(string msg, bool isInput) { if (isInput) { calcState = CalcState.AccumulateDigits; if (msg == "," && secondNumber.Contains(',') == false) { secondNumber = "0,"; changeTextDelegate.Invoke(secondNumber); } else { secondNumber += msg; changeTextDelegate.Invoke(secondNumber); } } else { if (Rules.IsDigit(msg)) { secondNumber += msg; changeTextDelegate.Invoke(secondNumber); } else if (Rules.IsSeparator(msg)) { if (secondNumber.Contains(',') == false) { secondNumber += ","; changeTextDelegate.Invoke(secondNumber); } } else if (Rules.IsChangingSign(msg)) { if (secondNumber[0] == '-') { secondNumber = secondNumber.Remove(0, 1); } else { secondNumber = "-" + secondNumber; } changeTextDelegate.Invoke(secondNumber); } else if (Rules.IsOperation(msg)) { Operation(msg, true); reccuring.Add(msg); string text = string.Join(" ", reccuring.ToArray()); changeRecurringTextDelegate.Invoke(text); } else if (Rules.IsPercent(msg)) { if (operation == "+" || operation == "-") { CalculatePercent(); } else if (operation == "x" || operation == "÷") { CalculateSecondPercent(); } changeTextDelegate.Invoke(secondNumber); } else if (Rules.IsResult(msg)) { Result(msg, true); } else if (Rules.IsFullReset(msg)) { FullReset(); } else if (Rules.IsReset(msg)) { Reset(); } else if (Rules.IsBackspace(msg)) { secondNumber = secondNumber.Remove(secondNumber.Length - 1); changeTextDelegate.Invoke(secondNumber); if (secondNumber.Length <= 0) { changeTextDelegate.Invoke("0"); } } else if (Rules.IsMemoryOperation(msg)) { MemorySave(msg, true); } else if (Rules.IsSinCos(msg)) { SinCos(msg, true); } else if (msg == "Mod") { Modulo(msg, true); } else if (msg == "log") { Logarithm(msg, true); } else if (msg == "x^y") { ParticularPower(msg, true); } else if (msg == "10^x") { PowerOfTen(msg, true); } else if (msg == "n!") { Factorial(msg, true); } else if (msg == "yrootx") { AnyRoot(msg, true); } else if (msg == ")") { reccuring.Add(secondNumber); reccuring.Add(")"); string text = string.Join(" ", reccuring.ToArray()); changeRecurringTextDelegate.Invoke(text); Expression(msg, true); } } }
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, " "); } } } }