Esempio n. 1
0
        public RationalNumber Multiply(RationalNumber r)
        {
            RationalNumber rnl, rnl1, rnl2;
            Int64          num, denom;

            reduce();
            r.reduce();

            rnl1 = new RationalNumber(Numerator, r.Denominator);
            rnl1.reduce();
            rnl2 = new RationalNumber(r.Numerator, Denominator);
            rnl2.reduce();

            num   = rnl1.Numerator * rnl2.Numerator;
            denom = rnl1.Denominator * rnl2.Denominator;

            rnl = new RationalNumber(num, denom);

            return(rnl);
        }
Esempio n. 2
0
        /// <summary>
        /// Calculates common divisor for rational numbers numerator and denominator
        /// </summary>
        /// <param name="number">Rational Number</param>
        /// <seealso cref="RationalNumber"/>
        /// <returns>Greatest common divisor of Numerator and Denominator</returns>
        public static int GetGreatestCommonDivisor(this RationalNumber number)
        {
            int number1 = Math.Abs(number.Numerator);
            int number2 = Math.Abs(number.Denominator);

            while (number1 != 0 && number2 != 0)
            {
                if (number1 > number2)
                {
                    number1 %= number2;
                }
                else
                {
                    number2 %= number1;
                }
            }
            int gcd = number1 == 0 ? number2 : number1;

            return(gcd);
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            List <RationalNumber> allNumbers = new List <RationalNumber>();

            allNumbers.Add(new RationalNumber(7, 5));
            allNumbers.Add(new RationalNumber(1, 4));
            allNumbers.Add(new RationalNumber(2, 7));
            allNumbers.Add(new RationalNumber(3, 5));

            allNumbers.Sort();

            RationalNumber sum = new RationalNumber(0, 1);

            foreach (var number in allNumbers)
            {
                sum += number;
                Console.WriteLine(number);
            }

            Console.WriteLine("Sum = " + sum);

            Console.ReadLine();
        }
Esempio n. 4
0
        public RationalNumber Add(RationalNumber r)
        {
            Int64 k     = 0;
            Int64 denom = 0;
            Int64 num   = 0;

            RationalNumber rn1;

            reduce();
            r.reduce();

            rn1 = new RationalNumber(Denominator, r.Denominator);
            rn1.reduce();
            k = rn1.Denominator;

            denom = Denominator * k;

            num = Numerator * k + r.Numerator * (denom / r.Denominator);

            rn1 = new RationalNumber(num, denom);
            rn1.reduce();

            return(rn1);
        }
Esempio n. 5
0
        static void Main()
        {
            Console.WriteLine("Welcome to the fraction calculator!.\n");
            Console.WriteLine("To create a new Rational Number do as follows => IrationalNumber fraction = new RationalNumber(a , b ).\n");
            Console.WriteLine("Where  a is any positive or negative integer and b != 0.\n");
            Console.WriteLine("Parameters can be: - A single integer to express rational numbers in the form a/1\n");
            Console.WriteLine("Parameters can be: - Two integers to express rational numbers in the form a/b\n");
            Console.WriteLine("Parameters can be: - Strings in the form \"a\" \"a\\b\" or \"a b\" \n");
            Console.WriteLine("You can perform arithmetic operations on IrationalNumber objects using the inline operators + - * /\n");
            Console.WriteLine("For example:\n");
            Console.WriteLine("IrationalNumber fractionA = new RationalNumber(a1 , b1 ).\n");
            Console.WriteLine("IrationalNumber fractionB = new RationalNumber(a2 , b2 ).\n");
            Console.WriteLine("IrationalNumber fractionC = fractionA + fractionB\n");
            Console.WriteLine("Alternatively you can do obj1.Add(obj2), obj1.Subtract(obj2), obj1.Multiply(obj2), obj1.Divide(obj2)\n");
            Console.WriteLine("You can also do exponentiation of a real number in two ways, 1) integer.ExpReal(obj1) or 2) ExpReal(this int intNumber, RationalNumber r).\n");
            Console.WriteLine("You can also exponentiate a rational number obj1.ExpRational(integer)\n");
            IRationalNumber fractionA = new RationalNumber(1, 2);
            IRationalNumber fractionB = new RationalNumber("2");
            IRationalNumber fractionC = new RationalNumber("2/5");
            IRationalNumber fractionD = new RationalNumber("2 6");
            IRationalNumber fractionF = fractionA + fractionB;

            Console.WriteLine("*************");
            Console.WriteLine(IntNumberExtension.ShowMultiplication(fractionA, fractionB));
            Console.WriteLine("*************");
            Console.WriteLine(IntNumberExtension.ShowMultiplication(fractionA, fractionB));
            Console.WriteLine("*************");
            Console.WriteLine(IntNumberExtension.ShowDivision(fractionA, fractionB));
            Console.WriteLine("*************");
            Console.WriteLine(IntNumberExtension.ShowAddition(fractionA, fractionB));
            Console.WriteLine("*************");
            Console.WriteLine(IntNumberExtension.ShowSubtraction(fractionA, fractionB));
            Console.WriteLine("*************");
            Console.WriteLine($"Thanks to the operator overload we can also do this {fractionA} + {fractionB} = {fractionF}");
            Console.WriteLine("*************");
        }
 public static double Expreal(this int realNumber, RationalNumber r)
 {
     return(Math.Pow(realNumber, (double)r.Numerator / r.Denominator));
 }
        // We have moved the static class defnition outside RationalNumber class

        /// <summary>
        /// Static overload method of the ExpReal method.
        /// </summary>
        /// <param name="intNumber">Integer</param>
        /// <param name="r">RationalNumber</param>
        /// <returnsDouble></returns>
        public static double ExpReal(this int intNumber, RationalNumber r)
        {   // Static overload method of the ExpReal method.
            return(r.ExpReal(intNumber));
        }
Esempio n. 8
0
 // Gets exponentiation real number to the rational number power
 public static double ExpReal(this double doubleNumber, RationalNumber r) => r.ExpRealToRational(doubleNumber);
Esempio n. 9
0
 // Gets exponentiation int number to the rational number power
 public static double ExpReal(this int intNumber, RationalNumber r) => r.ExpRealToRational(intNumber);
Esempio n. 10
0
        static void Main()
        {
            IRationalNumber r = new RationalNumber(3, 5);

            Console.WriteLine($"This is the rational number: {r}");
        }
Esempio n. 11
0
 /// <summary>
 /// Raises this real number to a rational number <paramref name="r"/>.
 /// </summary>
 /// <param name="intNumber">A real number.</param>
 /// <param name="r">A rational number.</param>
 /// <returns>Return the result of <paramref name="intNumber"/> raised to <paramref name="r"/>.</returns>
 public static double ExpReal(this int intNumber, RationalNumber r)
 {
     return(r.ExpReal(intNumber));
 }
Esempio n. 12
0
        static void RationalNumberCalculator()
        {
            Int64 Numerator   = 0;
            Int64 Denominator = 0;

            Console.WriteLine("Enter Your Choice");
            Console.WriteLine("1 to reduce Rational number into it's lowest terms");
            Console.WriteLine("2 to Add Two Rational numbers");
            Console.WriteLine("3 to Subtract Two Rational numbers");
            Console.WriteLine("4 to Multiply Two Rational numbers");
            Console.WriteLine("5 to Divide a Rational number with another Rational number");
            Console.WriteLine("6 to check Equality of Two Rational numbers");
            Console.WriteLine("7 to Exit");

            int choice = Convert.ToInt16(Console.ReadLine().Trim());

            switch (choice)
            {
            case 1:     //reduce

                Console.WriteLine("Enter a Rational number to reduce to it's lowest terms");

                Console.WriteLine("Enter Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());

                RationalNumber rn = new RationalNumber(Numerator, Denominator);
                rn.reduce();
                Console.WriteLine("The Rational number in lowest terms is : " + rn);
                Console.ReadKey();
                break;

            case 2:     //add
                Console.WriteLine("Enter a Two Rational numbers to add");

                Console.WriteLine("Enter a First Rational number");
                Console.WriteLine("Enter 1st RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 1st RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber addrn1 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("Enter a Second Rational number");
                Console.WriteLine("Enter 2nd RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 2nd RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber addrn2 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("The Result of Addition is :" + addrn1.Add(addrn2));

                RationalNumberCalculator();
                break;

            case 3:     //subtraction
                Console.WriteLine("Enter Two Rational numbers to Subtract");

                Console.WriteLine("Enter a First Rational number");
                Console.WriteLine("Enter 1st RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 1st RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber subrn1 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("Enter a Second Rational number");
                Console.WriteLine("Enter 2nd RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 2nd RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber subrn2 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("The Result of Subtraction is :" + subrn1.Sub(subrn2));
                RationalNumberCalculator();
                break;

            case 4:     //multiplication
                Console.WriteLine("Enter Two Rational numbers to Multiply");

                Console.WriteLine("Enter a First Rational number");
                Console.WriteLine("Enter 1st RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 1st RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber mulrn1 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("Enter a Second Rational number");
                Console.WriteLine("Enter 2nd RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 2nd RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber mulrn2 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("The Result of Multiplication is :" + mulrn1.Multiply(mulrn2));
                RationalNumberCalculator();
                break;

            case 5:     //divide
                Console.WriteLine("Enter Two Rational numbers to Divide");

                Console.WriteLine("Enter a First Rational number");
                Console.WriteLine("Enter 1st RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 1st RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber dividern1 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("Enter a Second Rational number");
                Console.WriteLine("Enter 2nd RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 2nd RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber dividern2 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("The Result of Division is :" + dividern1.Divide(dividern2));
                RationalNumberCalculator();
                break;

            case 6:     //exit
                Console.WriteLine("Enter Two Rational numbers to check Equality.");

                Console.WriteLine("Enter a First Rational number");
                Console.WriteLine("Enter 1st RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 1st RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber eqrn1 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("Enter a Second Rational number");
                Console.WriteLine("Enter 2nd RN Numerator:");
                Numerator = Convert.ToInt64(Console.ReadLine().Trim());
                Console.WriteLine("Enter 2nd RN Denominator:");
                Denominator = Convert.ToInt64(Console.ReadLine().Trim());
                RationalNumber eqrn2 = new RationalNumber(Numerator, Denominator);

                Console.WriteLine("The Result of Equality is :" + eqrn1.Equal(eqrn2));
                RationalNumberCalculator();
                break;

            case 7:     //exit
                Console.WriteLine("exit");
                break;

            default:     //default
                Console.WriteLine("Choose any one of the above options.");
                RationalNumberCalculator();
                break;
            }
        }
Esempio n. 13
0
        public IRationalNumber Subtract(IRationalNumber number)
        {
            RationalNumber r2 = (RationalNumber)number;

            return(new RationalNumber((this.Numerator * r2.Denominator - r2.Numerator * this.Denominator), (this.Denominator * r2.Denominator)).Reduce());
        }
Esempio n. 14
0
 public static double ExpReal(this int intNumber, RationalNumber r)
 {
     return(Math.Pow(Math.Pow(intNumber, r.Numerator), 1.0 / r.Denominator));
 }
Esempio n. 15
0
        public IRationalNumber Multiply(IRationalNumber number)
        {
            RationalNumber r2 = (RationalNumber)number;

            return(new RationalNumber((this.Numerator * r2.Numerator), (this.Denominator * r2.Denominator)).Reduce());
        }