Exemplo n.º 1
0
        public void ProcessUnOp(CalculatorUnOperations op)
        {
            input = input ?? 0;

            switch (op)
            {
            case CalculatorUnOperations.Invert:
                input = -input;
                break;

            case CalculatorUnOperations.Reciprocal:
                if (input.Value == 0)
                {
                    ComputationError?.Invoke(this, "Division by Zero");
                }
                else
                {
                    input = 1 / input;
                }
                break;

            case CalculatorUnOperations.Sqr:
                input = Math.Pow(input.Value, 2);
                break;

            case CalculatorUnOperations.Sqrt:
                input = Math.Sqrt(input.Value);
                break;

            case CalculatorUnOperations.Backspace:
                if (input < 10)
                {
                    input = 0;
                }
                else
                {
                    string line = input.Value.ToString().Remove(input.Value.ToString().Length - 1);
                    input = Convert.ToDouble(line);
                }

                break;
            }
            didUpdateValue?.Invoke(this, input.Value, fractionDigits ?? 0);
        }
Exemplo n.º 2
0
        public void TransformInput(CalculatorTransformation t)
        {
            input = input ?? 0;

            switch (t)
            {
            case CalculatorTransformation.Negate:
                input = -input;
                break;

            case CalculatorTransformation.Percent:
                input /= 100;
                break;

            case CalculatorTransformation.Sqr:
                input *= input;
                break;

            case CalculatorTransformation.Sqrt:
                if (input.HasValue && input.Value >= 0)
                {
                    input = Math.Sqrt(input ?? 0);
                }
                else
                {
                    ComputationError.Invoke(this, "Negative Square");
                }
                break;

            case CalculatorTransformation.Inverse:
                if (input.HasValue && input.Value != 0)
                {
                    input = 1 / input;
                }
                else
                {
                    ComputationError.Invoke(this, "Division by Zero");
                }
                break;
            }

            DidUpdateValue?.Invoke(this, input.Value, fractionDigits);
        }
Exemplo n.º 3
0
        public void Compute()
        {
            switch (this.op)
            {
            case CalculatorOperation.Add:
                result = result + input;
                DidUpdateValue?.Invoke(this, result.Value, 0);
                ResetInput();
                break;

            case CalculatorOperation.Div:
                if (input.HasValue && input.Value != 0)
                {
                    result = result / input;
                    DidUpdateValue?.Invoke(this, result.Value, 0);
                    ResetInput();
                }
                else
                {
                    ComputationError?.Invoke(this, "Division by Zero");
                }
                break;
            }
        }
Exemplo n.º 4
0
        public void Compute()
        {
            switch (op)
            {
            case CalculatorOperations.Add:
                result = result + input;
                break;

            case CalculatorOperations.Sub:
                result = result - input;
                break;

            case CalculatorOperations.Mul:
                result = result * input;
                break;

            case CalculatorOperations.Div:
                if (input.HasValue && input.Value == 0)
                {
                    ComputationError?.Invoke(this, "Division by Zero");
                    return;
                }
                else
                {
                    result = result / input;
                }
                break;

            case CalculatorOperations.Percent:
                result = result * input / 100;
                break;
            }

            didUpdateValue?.Invoke(this, result.Value, 0);
            input = null;
        }