コード例 #1
0
 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);
         }
     }
 }
コード例 #2
0
ファイル: Brain.cs プロジェクト: Almaz-Takibayev/PP2
 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);
         }
     }
 }
コード例 #3
0
 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);
         }
     }
 }
コード例 #4
0
 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);
         }
     }
 }
コード例 #5
0
ファイル: Calc.cs プロジェクト: Groompel/PP2
 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);
         }
     }
 }
コード例 #6
0
ファイル: Brain.cs プロジェクト: Almaz-Takibayev/PP2
 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);
         }
     }
 }
コード例 #7
0
 void Zero(bool isInput, string msg)
 {
     if (isInput)
     {
         calcState = CalcState.Zero;
     }
     else
     {
         if (Rules.IsNonZeroDigit(msg))
         {
             AccumulateDigit(true, msg);
         }
     }
 }
コード例 #8
0
 void Zero(string msg, bool isInput)
 {
     if (isInput)
     {
         calcState = CalcState.Zero;
     }
     else
     {
         if (Rules.IsNonZeroDigit(msg))
         {
             AccumulateDigits(msg, true);
         }
     }
 }
コード例 #9
0
        void AnyRoot(string msg, bool isInput)
        {
            if (isInput)
            {
                calcState    = CalcState.AnyRoot;
                operation    = "root";
                firstNumber  = secondNumber;
                secondNumber = "";
            }

            else
            {
                if (Rules.IsNonZeroDigit(msg))
                {
                    AccumulateDigits(msg, true);
                }
            }
        }
コード例 #10
0
        void ParticularPower(string msg, bool isInput)
        {
            if (isInput)
            {
                calcState    = CalcState.ParticularPower;
                operation    = "pow";
                firstNumber  = secondNumber;
                secondNumber = "";
            }

            else
            {
                if (Rules.IsNonZeroDigit(msg))
                {
                    AccumulateDigits(msg, true);
                }
            }
        }
コード例 #11
0
        void Modulo(string msg, bool isInput)
        {
            if (isInput)
            {
                calcState    = CalcState.Modulo;
                operation    = "Mod";
                firstNumber  = secondNumber;
                secondNumber = "";
            }

            else
            {
                if (Rules.IsNonZeroDigit(msg))
                {
                    AccumulateDigits(msg, true);
                }
            }
        }
コード例 #12
0
        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);
            }
        }
コード例 #13
0
 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);
         }
     }
 }
コード例 #14
0
ファイル: Calc.cs プロジェクト: Groompel/PP2
 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);
         }
     }
 }
コード例 #15
0
        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);
                }
            }
        }
コード例 #16
0
        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);
                }
            }
        }