// 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()); }
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); } }
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(); }
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); }