Ejemplo n.º 1
0
        // change the selected operator based on (ComboBox)OperatorInput selection
        private void ChangeCurrentOperator()
        {
            if ((ComboBoxItem)OperatorInput.SelectedItem == null)
            {
                OperatorInput.SelectedItem = (ComboBoxItem)OperatorInput.Items.First();
            }
            string OperatorSelectedName = ((ComboBoxItem)OperatorInput.SelectedItem).Name;

            OperatorNameDisplay.Text = OperatorSelectedName;

            switch (OperatorSelectedName)
            {
            case "Plus": ActiveOperator = CalculatorOperators.Plus; break;

            case "Minus": ActiveOperator = CalculatorOperators.Minus; break;

            case "Multiply": ActiveOperator = CalculatorOperators.Multiply; break;

            case "Divide": ActiveOperator = CalculatorOperators.Divide; break;

            case "Power": ActiveOperator = CalculatorOperators.Power; break;

            case "Root": ActiveOperator = CalculatorOperators.Root; break;

            default: OperatorNameDisplay.Text = "Error"; break;
            }

            Debug.WriteLine("OperatorItem selected; {0}. ActiveOperator set to; {1}", OperatorSelectedName, ActiveOperator.ToString());
        }
Ejemplo n.º 2
0
        private double Calculate(double right, double left, CalculatorOperators op)
        {
            switch (op)
            {
            case CalculatorOperators.Multiplication:
                return(left * right);

            case CalculatorOperators.Division:
                if (right == 0)
                {
                    throw new DivideByZeroException(Constants.ZERO_DIVISION);
                }

                return(left / right);

            case CalculatorOperators.Subtraction:
                return(left - right);

            case CalculatorOperators.Addition:
                return(left + right);

            default:
                throw new ArgumentOutOfRangeException(nameof(op), op, Constants.INVALID_OPERATOR);
            }
        }
Ejemplo n.º 3
0
 public void PressOperator(CalculatorOperators op)
 {
     if (op == CalculatorOperators.Eql)
     {
         lcd.Result = lcd.Label;
     }
 }
        /// <summary>
        /// BT_Code: Processing a write request.Takes in a GATT Write request and updates UX based on opcode.
        /// </summary>
        /// <param name="request"></param>
        /// <param name="opCode">Operand (1 or 2) and Operator (3)</param>
        private void ProcessWriteCharacteristic(GattWriteRequest request, CalculatorCharacteristics opCode)
        {
            if (request.Value.Length != 4)
            {
                // Input is the wrong length. Respond with a protocol error if requested.
                if (request.Option == GattWriteOption.WriteWithResponse)
                {
                    request.RespondWithProtocolError(GattProtocolError.InvalidAttributeValueLength);
                }
                return;
            }

            var reader = DataReader.FromBuffer(request.Value);

            reader.ByteOrder = ByteOrder.LittleEndian;
            int val = reader.ReadInt32();

            switch (opCode)
            {
            case CalculatorCharacteristics.Operand1:
                operand1Received = val;
                break;

            case CalculatorCharacteristics.Operand2:
                operand2Received = val;
                break;

            case CalculatorCharacteristics.Operator:
                if (!Enum.IsDefined(typeof(CalculatorOperators), val))
                {
                    if (request.Option == GattWriteOption.WriteWithResponse)
                    {
                        request.RespondWithProtocolError(GattProtocolError.InvalidPdu);
                    }
                    return;
                }
                operatorReceived = (CalculatorOperators)val;
                break;
            }
            // Complete the request if needed
            if (request.Option == GattWriteOption.WriteWithResponse)
            {
                request.Respond();
            }

            UpdateUX();
        }
Ejemplo n.º 5
0
        private double GetChunkResult(ref List <char> expression, int position, CalculatorOperators op)
        {
            var rightPart = expression.GetRange(position + 1, expression.Count - position - 1);

            expression = expression.GetRange(0, position);
            var right      = ExtractNumber(ref rightPart, false);
            var left       = ExtractNumber(ref expression);
            var tempResult = Calculate(right, left, op);

            if (expression.Any() || rightPart.Any())
            {
                rightPart.InsertRange(0, tempResult.ToString());
                expression.AddRange(rightPart);
            }

            return(tempResult);
        }