void Result(string msg, bool isInput) { if (isInput) { isPoint = true; calcState = CalcState.Result; PerformCalculation(); operation = ""; changeTextDelegate.Invoke(resultNumber); } else { if (Rules.IsOperation(msg)) { Operation(msg, true); } else if (Rules.IsNonZeroDigit(msg)) { tempNumber = ""; resultNumber = ""; changeTextDelegate.Invoke(tempNumber); AccumulateDigits(msg, true); } else if (Rules.IsResult(msg)) { Result(msg, true); } else if (Rules.IsQuickOperation(msg)) { QuickOperation(msg, true); } } }
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 QuickOperation(string msg, bool isInput) { if (isInput) { if (resultNumber != "") { tempNumber = resultNumber; resultNumber = ""; } isPoint = true; calcState = CalcState.QuickOperation; operation = msg; QuickCalulation(); changeTextDelegate(tempNumber); } else { if (Rules.IsNonZeroDigit(msg)) { tempNumber = ""; resultNumber = ""; changeTextDelegate.Invoke(tempNumber); AccumulateDigits(msg, true); } else if (Rules.IsOperation(msg)) { Operation(msg, true); } else if (Rules.IsQuickOperation(msg)) { QuickOperation(msg, true); } } }
void Result(bool isInput, string msg) { if (isInput) { calcState = CalcState.Result; Calculate(); displayMsg(resultNumber); } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigit(true, msg); } else if (Rules.IsZero(msg)) { Zero(true, msg); } else if (Rules.IsOperator(msg)) { operation = ""; tempNumber = resultNumber; Compute(true, msg); } } }
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); } } }
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); } } }
void Zero(bool isInput, string msg) { if (isInput) { calcState = CalcState.Zero; } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigit(true, msg); } } }
void Zero(string msg, bool isInput) { if (isInput) { calcState = CalcState.Zero; } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(msg, true); } } }
void AnyRoot(string msg, bool isInput) { if (isInput) { calcState = CalcState.AnyRoot; operation = "root"; firstNumber = secondNumber; secondNumber = ""; } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(msg, true); } } }
void ParticularPower(string msg, bool isInput) { if (isInput) { calcState = CalcState.ParticularPower; operation = "pow"; firstNumber = secondNumber; secondNumber = ""; } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(msg, true); } } }
void Modulo(string msg, bool isInput) { if (isInput) { calcState = CalcState.Modulo; operation = "Mod"; firstNumber = secondNumber; secondNumber = ""; } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(msg, true); } } }
void Compute2(bool isInput, string msg) { if (isInput) { calcState = CalcState.Compute2; resultNumber = tempNumber; tempNumber = ""; operation = msg; Calculate(); displayMsg(resultNumber); } else if (Rules.IsNonZeroDigit(msg)) { AccumulateDigit(true, msg); } else if (Rules.IsZero(msg)) { Zero(true, msg); } else if (Rules.IsOperator(msg)) { operation = ""; tempNumber = resultNumber; Compute(true, msg); } else if (Rules.IsStrange(msg)) { operation = ""; tempNumber = resultNumber; Compute2(true, msg); } else if (Rules.IsClear(msg)) { operation = ""; tempNumber = resultNumber; Zero(true, msg); } else if (Rules.IsDot(msg)) { AccumulateDigit(true, 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); } } }
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 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 Expression(string msg, bool isInput) { calcState = CalcState.Expression; isAdvancedExpression = true; isExpression = false; Stack <Stack <int> > allSumNumbers = new Stack <Stack <int> >(); Stack <Stack <string> > allOperations = new Stack <Stack <string> >(); Stack <Stack <string> > allSigns = new Stack <Stack <string> >(); Stack <int> precendenceNumbers = new Stack <int>(); if (isInput) { if (msg == "(") { operation = ""; secondNumber = ""; allSumNumbers.Push(sumNumbers); allOperations.Push(operations); allSigns.Push(signs); precendenceNumbers.Push(precendence); sumNumbers = new Stack <int>(); operations = new Stack <string>(); signs = new Stack <string>(); precendence = 0; } else if (msg == ")") { if (operations.Peek() == "+") { sumNumbers.Push(int.Parse(secondNumber)); } else if (operations.Peek() == "-") { sumNumbers.Push(int.Parse(secondNumber) * (-1)); } else if (operations.Peek() == "x") { if (signs.Peek() == "-") { precendence *= (-1); } precendence *= int.Parse(secondNumber); sumNumbers.Push(precendence); } else if (operations.Peek() == "รท") { if (signs.Peek() == "-") { precendence *= (-1); } precendence /= int.Parse(secondNumber); sumNumbers.Push(precendence); } int temp = 0; while (sumNumbers.Count > 0) { temp += sumNumbers.Peek(); sumNumbers.Pop(); } secondNumber = temp.ToString(); changeTextDelegate.Invoke(secondNumber); allSumNumbers.Push(sumNumbers); allOperations.Push(operations); allSigns.Push(signs); precendenceNumbers.Push(precendence); sumNumbers = allSumNumbers.Peek(); operations = allOperations.Peek(); signs = allSigns.Peek(); precendence = precendenceNumbers.Peek(); } } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(msg, true); } else if (Rules.IsResult(msg)) { Result(msg, true); } } }