Exemplo n.º 1
0
 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);
         }
     }
 }
Exemplo n.º 2
0
 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);
         }
     }
 }
Exemplo n.º 3
0
 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);
         }
     }
 }
Exemplo n.º 4
0
 void Compute(string msg, bool isInput)
 {
     if (isInput)
     {
         calcState = CalcState.Compute;
         if (Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg))
         {
             operation = msg;
             if (operation.Length > 0)
             {
                 if (Rules.IsOneOperation(msg))
                 {
                     OneOperation();
                 }
                 if (Rules.IsPlusMinus(msg))
                 {
                     PlusMinus();
                 }
                 if (Rules.IsDelete(msg))
                 {
                     Delete();
                 }
                 changeTextDelegate(resultNumber);
             }
             resultNumber = tempNumber;
             operation    = "";
         }
         else
         {
             if (operation.Length > 0)
             {
                 if (Rules.IsOperation(msg))
                 {
                     Operation();
                     changeTextDelegate(resultNumber);
                 }
             }
             else
             {
                 resultNumber = tempNumber;
             }
             operation  = msg;
             tempNumber = "";
         }
     }
     else
     {
         if (Rules.IsDigit(msg))
         {
             AccumulateDigits(msg, true);
         }
         else if (Rules.IsC(msg))
         {
             Zero(msg, true);
         }
         else if (Rules.IsCE(msg))
         {
             tempNumber = "";
             AccumulateDigits(tempNumber, true);
         }
         //else if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg))
         //{
         //    Compute(msg, true);
         //}
     }
 }