public fraccion Dividir(fraccion otra)
        {
            int      n1        = numerador + (entero * denominador);
            int      n2        = otra.numerador + (otra.entero * otra.denominador);
            fraccion resultado = new fraccion(n1 * otra.denominador, n2 * denominador);

            resultado = Simplifcar(resultado);
            return(resultado);
        }
        private void LblCalcularResultado_Click(object sender, EventArgs e)
        {
            fraccion f1        = new fraccion((int)NumEntero1.Value, (int)NumNumerador1.Value, (int)NumDenominador1.Value);
            fraccion f2        = new fraccion((int)NumEntero2.Value, (int)NumNumerador2.Value, (int)NumDenominador2.Value);
            fraccion resultado = null;

            switch (cboOperaccione.Text)
            {
            case "+":
                resultado = f1.Sumar(f2);
                break;

            case "-":
                resultado = f1.Restar(f2);
                break;

            case "x":
                resultado = f1.Multiplicar(f2);
                break;

            case "/":
                resultado = f1.Dividir(f2);
                break;

            default:
                MessageBox.Show("falta seleccionar la operacion", " error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            LblLinea.Text = "___________";
            if (resultado.Entero == 0)
            {
                LblEnteroRe.Text = "";
            }
            else
            {
                LblEnteroRe.Text = resultado.Entero + "";
            }
            if (resultado.Numerador == 0)
            {
                LblNumeradorRe.Text   = "";
                LblDenominadorRe.Text = "";
                LblLinea.Text         = "";
            }
            else
            {
                LblNumeradorRe.Text   = resultado.Numerador + "";
                LblDenominadorRe.Text = resultado.Denominador + "";
            }


            //LblNumeradorRe.Text = resultado.ToString();
        }
        public fraccion Restar(fraccion otra)
        {
            int denominadorComun = denominador * otra.denominador;
            int e1 = entero * denominadorComun;
            int n1 = (denominadorComun / denominador) * numerador;

            n1 += e1;
            int e2 = otra.entero * denominadorComun;
            int n2 = (denominadorComun / denominador) * otra.numerador;

            n2 += e2;
            fraccion resultado = new fraccion(n1 - n2, denominadorComun);

            resultado = Simplifcar(resultado);
            return(resultado);
        }
        public fraccion Simplifcar(fraccion f)
        {
            fraccion fraccionSimplificada;

            //Agregar la parte entera a la fraccion
            int  n        = (f.Entero * f.Denominador) + f.Numerador;
            int  d        = f.Denominador;
            int  e        = 0;
            bool negativo = false;

            if (n < 0)
            {
                negativo = true;
                n       *= -1;
            }
            //reducir la fraccion
            //calcular el maximo comun divisor
            int mcd = MaximoComunDivisor(n, d);

            if (mcd != 0)
            {
                //Reducir la fraccion con base al MCD
                n = n / mcd;
                d = d / mcd;

                if (n >= d)
                {
                    e = n / d;
                    n = n % d;
                }
            }
            if (negativo && e > 0)
            {
                e *= -1;
            }
            if (negativo && e == 0)
            {
                n *= -1;
            }


            fraccionSimplificada = new fraccion(e, n, d);
            //Regresar la fraccion reducida
            return(fraccionSimplificada);
        }