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); }
/// <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); }
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(); }
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); }
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)); }
// Gets exponentiation real number to the rational number power public static double ExpReal(this double doubleNumber, RationalNumber r) => r.ExpRealToRational(doubleNumber);
// Gets exponentiation int number to the rational number power public static double ExpReal(this int intNumber, RationalNumber r) => r.ExpRealToRational(intNumber);
static void Main() { IRationalNumber r = new RationalNumber(3, 5); Console.WriteLine($"This is the rational number: {r}"); }
/// <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)); }
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; } }
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()); }
public static double ExpReal(this int intNumber, RationalNumber r) { return(Math.Pow(Math.Pow(intNumber, r.Numerator), 1.0 / r.Denominator)); }
public IRationalNumber Multiply(IRationalNumber number) { RationalNumber r2 = (RationalNumber)number; return(new RationalNumber((this.Numerator * r2.Numerator), (this.Denominator * r2.Denominator)).Reduce()); }