Пример #1
0
        //分数配置
        public static Fraction_Math FractionSet(double num1, double num2)
        {
            Fraction_Math Franction = new Fraction_Math();
            int           opnext    = l.Next(4, 5);
            Fraction_Math result    = null;

            Franction.Denominator = num1;
            Franction.Numerator   = num2;
            switch (opnext)
            {
            case 1:
                result = Franction.Add(num1, num2);
                break;

            case 2:
                result = Franction.Sub(num1, num2);
                break;

            case 3:
                result = Franction.Multiple(num1, num2);
                break;

            case 4:
                result = Franction.Divided(num1, num2);
                break;
            }
            return(result);
        }
Пример #2
0
        /// <summary>
        /// 计算两个分数的相除,并返回一个分数
        /// </summary>
        /// <param name="dividend">被除数</param>
        /// <param name="divisor">除数</param>
        /// <returns></returns>
        public Fraction_Math Divided(Fraction_Math dividend, Fraction_Math divisor)
        {
            Fraction_Math result       = new Fraction_Math();
            double        dencominator = dividend.Denominator * divisor.Numerator;

            result.Denominator = dencominator;
            result.Numerator   = dividend.Numerator * divisor.Denominator;
            return(result);
        }
Пример #3
0
        /// <summary>
        /// 计算两个分数的相乘,并返回一个分数
        /// </summary>
        /// <param name="f1"></param>
        /// <param name="f2"></param>
        /// <returns></returns>
        public Fraction_Math Multiple(Fraction_Math f1, Fraction_Math f2)
        {
            Fraction_Math result       = new Fraction_Math();
            double        dencominator = f1.Denominator * f2.Denominator;

            result.Denominator = dencominator;
            result.Numerator   = f1.Numerator * f2.Numerator;
            return(result);
        }
Пример #4
0
        /// <summary>
        ///  计算两个分数的相减,并返回一个分数
        /// </summary>
        /// <param name="minuend">被减数</param>
        /// <param name="subtrahend">减数</param>
        /// <returns></returns>
        public Fraction_Math Sub(Fraction_Math minuend, Fraction_Math subtrahend)
        {
            Fraction_Math result       = new Fraction_Math();
            double        dencominator = CalculateLeaseCommonMultiple(minuend.Denominator, subtrahend.Denominator);

            minuend.Numerator    = (dencominator / minuend.Denominator) * minuend.Numerator;
            subtrahend.Numerator = (dencominator / subtrahend.Denominator) * subtrahend.Numerator;
            result.Denominator   = dencominator;
            result.Numerator     = minuend.Numerator - subtrahend.Numerator;
            return(result);
        }
Пример #5
0
        /// <summary>
        /// 计算两个分数的相加,并返回一个分数
        /// </summary>
        /// <param name="f1"></param>
        /// <param name="f2"></param>
        /// <returns></returns>
        public Fraction_Math Add(Fraction_Math f1, Fraction_Math f2)
        {
            Fraction_Math result       = new Fraction_Math();
            double        dencominator = CalculateLeaseCommonMultiple(f1.Denominator, f2.Denominator);

            f1.Numerator       = (dencominator / f1.Denominator) * f1.Numerator;
            f2.Numerator       = (dencominator / f2.Denominator) * f2.Numerator;
            result.Denominator = dencominator;
            result.Numerator   = f1.Numerator + f2.Numerator;
            return(result);
        }
Пример #6
0
        public static Fraction_Math Score(string fraction)
        {
            Fraction_Math fraction_Math = new Fraction_Math();

            if (!IsFractioon(fraction))
            {
                fraction_Math.Numerator   = Convert.ToDouble(fraction) * Convert.ToDouble(fraction);
                fraction_Math.Denominator = Convert.ToDouble(fraction);
                return(fraction_Math);
            }
            string n = null, m = null;

            n = fraction.Substring(0, Fraction_Math.Appoint(fraction));
            m = fraction.Substring(Fraction_Math.Appoint(fraction) + 1, fraction.Length - 1 - Fraction_Math.Appoint(fraction));
            fraction_Math.Numerator   = Convert.ToDouble(n);
            fraction_Math.Denominator = Convert.ToDouble(m);
            return(fraction_Math);
        }
Пример #7
0
        public static string Fraction(string d1, string d2, char c1)
        {
            Fraction_Math fraction_Math = new Fraction_Math();
            DataTable     dt = new DataTable();
            Fraction_Math D1 = Score(d1), D2 = Score(d2);
            string        s;

            switch (c1)
            {
            case '+':
                Fraction_Math st = fraction_Math.Add(D1, D2);
                s = st.Numerator + "/" + st.Denominator;
                break;

            case '-':
                st = fraction_Math.Sub(D1, D2);
                s  = st.Numerator + "/" + st.Denominator;
                break;

            case '×':
                st = fraction_Math.Multiple(D1, D2);
                s  = st.Numerator + "/" + st.Denominator;
                break;

            case '÷':
                st = fraction_Math.Divided(D1, D2);
                s  = st.Numerator + "/" + st.Denominator;
                break;

            default:
                s = null;
                break;
            }

            if (Regex.IsMatch(dt.Compute(s, null).ToString(), @"^[+-]?\d*[.]?$"))
            {
                return(dt.Compute(s, null).ToString());
            }
            return(s);
        }
Пример #8
0
        private static string GetAns(string a1, string b1, char c)
        {
            double s = 0, a, b;

            if (IsFractioon(a1) || IsFractioon(b1))
            {
                return(Fraction_Math.Fraction(b1, a1, c));
            }
            a = Convert.ToDouble(a1);
            b = Convert.ToDouble(b1);
            switch (c)
            {
            case '+': s = b + a; break;

            case '-': s = b - a; break;

            case '×': s = b * a; break;

            case '÷': s = b / a; break;

            case '^': s = Math.Pow(b, a); break;
            }
            return(s.ToString());
        }