public ResultadoDeOperacion Division(int dividendo, int divisor)
 {
     try
     {
         if (Int32.MaxValue < dividendo / dividendo || Int32.MinValue > dividendo * dividendo)
         {
             ResultadoDeOperacion cociente = new ResultadoDeOperacion(0, true, "El valor de la operación se encuentra fuera de los límites de procesamiento de la calculadora");
             return(cociente);
         }
         else
         {
             int resultadoOperacion        = dividendo / dividendo;
             ResultadoDeOperacion cociente = new ResultadoDeOperacion(resultadoOperacion, false, "");
             return(cociente);
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
 public ResultadoDeOperacion Resta(int minuendo, int substraendo)
 {
     try
     {
         if (Int32.MaxValue < minuendo - substraendo || Int32.MinValue > minuendo - substraendo)
         {
             ResultadoDeOperacion diferencia = new ResultadoDeOperacion(0, true, "El valor de la operación se encuentra fuera de los límites de procesamiento de la calculadora");
             return(diferencia);
         }
         else
         {
             int resultadoOperacion          = minuendo - substraendo;
             ResultadoDeOperacion diferencia = new ResultadoDeOperacion(resultadoOperacion, false, "");
             return(diferencia);
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
 public ResultadoDeOperacion Multiplicacion(int factorX, int factorY)
 {
     try
     {
         if (Int32.MaxValue < factorX * factorY || Int32.MinValue > factorX * factorY)
         {
             ResultadoDeOperacion producto = new ResultadoDeOperacion(0, true, "El valor de la operación se encuentra fuera de los límites de procesamiento de la calculadora");
             return(producto);
         }
         else
         {
             int resultadoOperacion        = factorX * factorY;
             ResultadoDeOperacion producto = new ResultadoDeOperacion(resultadoOperacion, false, "");
             return(producto);
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
 public ResultadoDeOperacion Suma(int sumandoX, int sumandoY)
 {
     try
     {
         /*se controlan los posibles errores de overflow*/
         if (Int32.MaxValue < sumandoX + sumandoY || Int32.MinValue > sumandoX + sumandoY)
         {
             ResultadoDeOperacion suma = new ResultadoDeOperacion(0, true, "El valor de la operación se encuentra fuera de los límites de procesamiento de la calculadora");
             return(suma);
         }
         else
         {
             int resultadoOperacion    = sumandoX + sumandoY;
             ResultadoDeOperacion suma = new ResultadoDeOperacion(resultadoOperacion, false, "");
             return(suma);
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
Ejemplo n.º 5
0
        private void btn_igual_Click(object sender, EventArgs e)
        {
            try
            {
                /*inicializo el conversor y el operador que me permitiran llevar a delante la logica del calculo*/

                Conversiones conversor = new Conversiones();
                Operacion    operador  = new Operacion();

                if (txb_visor.Text != "" && lbl_terminoUno.Text != "")
                {
                    lbl_terminoDos.Text = txb_visor.Text; /*se almacena este dato en el caso de luego querer incorporar alguna
                                                           * funcionalidad relacionada al recalculo en base a un resultado ya obtenido*/

                    switch (lbl_operador.Text)
                    {                                   /*se convierte a decimal lo ingresado en el visor. Luego en una variable de tipo
                                                         * ResultadoDeOPeracion se guarda el resultado de la operacion, ya sea un error o el total numerico*/
                    case "X":
                    {
                        int factor1 = conversor.Hex_a_Decimal(lbl_terminoUno.Text);
                        int factor2 = conversor.Hex_a_Decimal(lbl_terminoDos.Text);
                        ResultadoDeOperacion producto;
                        producto = operador.Multiplicacion(factor1, factor2);
                        if (!producto.reportaError)
                        {
                            txb_visor.MaxLength = 32;                                               /* Si no da error la operacion se convierte el resultado a hexadecimal*/
                            txb_visor.Text      = conversor.Decimal_a_Hex(producto.resultado);      /*y se muestra en pantalla*/

                            lbl_terminoUno.Text = "";
                            lbl_operador.Text   = "";

                            txb_visor.Enabled  = false;
                            this.ActiveControl = btn_reestablece;
                            btn_reestablece.Focus();
                            btn_suma.Enabled           = false;
                            btn_resta.Enabled          = false;
                            btn_division.Enabled       = false;
                            btn_multiplicacion.Enabled = false;
                        }
                        else
                        {
                            MessageBox.Show(producto.descripcionError, "Aviso", MessageBoxButtons.OK);         /* caso contrario se dispara un aviso*/
                        }

                        break;
                    }

                    case "/":
                    {
                        Validaciones validador = new Validaciones();

                        int dividendo = conversor.Hex_a_Decimal(lbl_terminoUno.Text);
                        int divisor   = conversor.Hex_a_Decimal(lbl_terminoDos.Text);
                        if (!validador.DivisionPorCero(divisor))
                        {
                            ResultadoDeOperacion cociente;
                            cociente = operador.Division(dividendo, divisor);
                            if (!cociente.reportaError)
                            {
                                txb_visor.MaxLength = 32;
                                txb_visor.Text      = conversor.Decimal_a_Hex(cociente.resultado);


                                lbl_terminoUno.Text = "";
                                lbl_operador.Text   = "";

                                txb_visor.Enabled  = false;
                                this.ActiveControl = btn_reestablece;
                                btn_reestablece.Focus();
                                btn_suma.Enabled           = false;
                                btn_resta.Enabled          = false;
                                btn_division.Enabled       = false;
                                btn_multiplicacion.Enabled = false;
                            }
                            else
                            {
                                MessageBox.Show(cociente.descripcionError, "Aviso", MessageBoxButtons.OK);
                            }
                        }
                        else
                        {
                            txb_visor.Text      = "Error division por cero";
                            txb_visor.Enabled   = false;
                            lbl_terminoUno.Text = "";
                            lbl_terminoDos.Text = "";
                            lbl_operador.Text   = "";
                            this.ActiveControl  = btn_reestablece;
                            btn_reestablece.Focus();
                            btn_suma.Enabled           = false;
                            btn_resta.Enabled          = false;
                            btn_division.Enabled       = false;
                            btn_multiplicacion.Enabled = false;
                        }
                        break;
                    }

                    case "+":
                    {
                        int sumando1 = conversor.Hex_a_Decimal(lbl_terminoUno.Text);
                        int sumando2 = conversor.Hex_a_Decimal(lbl_terminoDos.Text);

                        ResultadoDeOperacion suma = operador.Suma(sumando1, sumando2);


                        if (!suma.reportaError)
                        {
                            txb_visor.MaxLength = 32;
                            txb_visor.Text      = conversor.Decimal_a_Hex(suma.resultado);



                            lbl_terminoUno.Text = "";
                            lbl_operador.Text   = "";

                            txb_visor.Enabled  = false;
                            this.ActiveControl = btn_reestablece;
                            btn_reestablece.Focus();
                            btn_suma.Enabled           = false;
                            btn_resta.Enabled          = false;
                            btn_division.Enabled       = false;
                            btn_multiplicacion.Enabled = false;
                        }
                        else
                        {
                            MessageBox.Show(suma.descripcionError, "Aviso", MessageBoxButtons.OK);
                        }
                        break;
                    }

                    case "-":
                    {
                        int minuendo   = conversor.Hex_a_Decimal(lbl_terminoUno.Text);
                        int sustraendo = conversor.Hex_a_Decimal(lbl_terminoDos.Text);


                        ResultadoDeOperacion diferencia = operador.Resta(minuendo, sustraendo);
                        if (!diferencia.reportaError)
                        {
                            txb_visor.MaxLength = 32;
                            txb_visor.Text      = conversor.Decimal_a_Hex(diferencia.resultado);



                            lbl_terminoUno.Text = "";
                            lbl_operador.Text   = "";

                            txb_visor.Enabled  = false;
                            this.ActiveControl = btn_reestablece;
                            btn_reestablece.Focus();
                            btn_suma.Enabled           = false;
                            btn_resta.Enabled          = false;
                            btn_division.Enabled       = false;
                            btn_multiplicacion.Enabled = false;
                        }
                        else
                        {
                            MessageBox.Show(diferencia.descripcionError, "Aviso", MessageBoxButtons.OK);
                        }
                        break;
                    }

                    default:
                        break;
                    }
                }
            }


            catch (Exception)
            {
                throw;
            }
        }