Exemple #1
0
        /// <summary>
        /// Zjednodušit zlomek
        /// </summary>
        private static Fraction _CreateSimplify(int integral, int numerator, int denominator, bool negativeDenominatorToPositive, SimplifyIntegralMode integralMode, bool simplifyFraction)
        {
            // Negative denominator: prepare
            bool hasNegativeDenominator = (denominator < 0);

            if (hasNegativeDenominator)
            {   // Uvnitř metody vždy pracuji s kladným jmenovatelem:
                numerator   = -numerator;
                denominator = -denominator;
            }

            // Integral part
            if (denominator != 0)
            {
                switch (integralMode)
                {
                case SimplifyIntegralMode.ToIntegral:
                    if (numerator >= denominator)
                    {
                        int addIntegral = (numerator / denominator);
                        integral  += addIntegral;
                        numerator -= (addIntegral * denominator);
                    }
                    if (numerator <= -denominator)
                    {
                        int subIntegral = (-numerator / denominator);
                        integral  -= subIntegral;
                        numerator += (subIntegral * denominator);
                    }
                    break;

                case SimplifyIntegralMode.ToNumerator:
                    if (integral != 0)
                    {
                        int addNominator = integral * denominator;
                        integral   = 0;
                        numerator += addNominator;
                    }
                    break;
                }
            }

            // Simplify Fraction part (Nominator and Denominator):
            if (simplifyFraction)
            {
                _SimplifyFraction(ref numerator, ref denominator);
            }

            // Negative denominator: undone
            if (hasNegativeDenominator && !negativeDenominatorToPositive)
            {   // Pokud jsme měli negativní jmenovatel, ale není požadavek na jeho otočení na pozitivní => vrátím (dosud) pozitivní jmenovatel na záp**ný, a otočím i čitatel:
                numerator   = -numerator;
                denominator = -denominator;
            }

            return(new Fraction(integral, numerator, denominator));
        }
Exemple #2
0
 /// <summary>
 /// Zjednodušit zlomek
 /// </summary>
 private static Fraction _CreateSimplify(Fraction source, bool negativeDenominatorToPositive, SimplifyIntegralMode integralMode, bool simplifyFraction)
 {
     return(_CreateSimplify(source.Integral, source.Numerator, source.Denominator, negativeDenominatorToPositive, integralMode, simplifyFraction));
 }