public ActionResult Index(string operationType, string operation, string FirstArgument, string SecondArgument) { String result; try { var validator = new Validator(); switch (operationType) { case "oneArgument": var argument = validator.ValidateNumber(FirstArgument); var calculator = OneArgmumentFactory.CreateCalculator(operation); result = Convert.ToString(calculator.Calculate(argument)); break; case "twoArguments": var firstArgument = validator.ValidateNumber(FirstArgument); var secondArgument = validator.ValidateNumber(SecondArgument); var calculator2 = TwoArgmumentFactory.CreateCalculator(operation); result = Convert.ToString(calculator2.Calculate(firstArgument, secondArgument)); break; case "order": var array = validator.ValidateArray(FirstArgument); var calculator3 = ArraySortFactory.CreateCalculator(operation); calculator3.Calculate(array); result = ""; for (Int16 i = 0; i < array.Length; i++) { result += Convert.ToString(array[i]); result += ", "; } break; default: result = "Undefined operation"; break; } } catch (InvalidOperationException) { result = "Error: second argument is empty"; } catch (Exception ex) { result = ex.Message; } TempData["Result"] = new Dictionary<string, object> { { "result", result } }; return RedirectToAction("Result"); }
/// <summary> /// Function for operations with two numbers /// </summary> /// <param name="sender">Button, that activated ivent</param> /// <param name="e">Operation type</param> private void Calculator(object sender, EventArgs e) { try { var validator = new Validator(); double firstArgument = validator.ValidateNumber(FirstInput.Text); double secondArgument = validator.ValidateNumber(SecondInput.Text); string operationName = (((Button) sender).Name); var operation = TwoArgumentFactory.CreateCalculator(operationName); double result = operation.Calculate(firstArgument, secondArgument); Value.Text = Convert.ToString(result); } catch (Exception exception) { MessageBox.Show(exception.Message, "Error", MessageBoxButtons.OK); } }
/// <summary> /// Event and exception handler for two-operand functoins /// </summary> /// <param name="sender">Pressed button name</param> private void ComputeTwo(object sender, EventArgs e) { try { var validator = new Validator(); double firstArgument = validator.ValidateNumber(FirstValue.Text); double secondArgument = validator.ValidateNumber(SecondValue.Text); string operation = ((Button) sender).Name; var op = TwoArgmumentFactory.CreateCalculator(operation); double result = op.Calculate(firstArgument, secondArgument); Result.Text = Convert.ToString(result); } catch (Exception ex) { MessageBox.Show(ex.Message, "You are a clayfish", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// <summary> /// Function for array sorting /// </summary> /// <param name="sender">Button, that activated ivent</param> /// <param name="e">Operation type</param> private void ArraySorting(object sender, EventArgs e) { try { var validator = new Validator(); string[] split = FirstInput.Text.Split(' '); double[] array = new double[split.Length]; for (int i = 0; i < split.Length; i++) { array[i] = validator.ValidateNumber(split[i]); } string operationName = (((Button) sender).Name); var operation = ArraySortingFactory.CreateSorting(operationName); double[] resultDoubleArray = operation.Sort(array); string[] resultStringArray = new string[split.Length]; for (int i = 0; i < array.Length; i++) { resultStringArray[i] = Convert.ToString(resultDoubleArray[i]); } string resultString = ""; for (int i = 0; i < resultStringArray.Length; i++) { resultString += resultStringArray[i] + ' '; } Value.Text = resultString; } catch (Exception exception) { MessageBox.Show(exception.Message, "Error", MessageBoxButtons.OK); } }