static void PerformOperationAndShowResult(BigRational x, BigRational y, RationalOperator op) { switch (op) { case RationalOperator.Add: Console.WriteLine("{0} + {1} = {2}", x, y, x + y); break; case RationalOperator.Divide: Console.WriteLine("{0} / {1} = {2}", x, y, x / y); break; case RationalOperator.LeastCommonDenominator: Console.WriteLine("LeastCommonDenominator({0}, {1}) = {2}", x, y, BigRational.LeastCommonDenominator(x, y)); break; case RationalOperator.Multiply: Console.WriteLine("{0} * {1} = {2}", x, y, x * y); break; case RationalOperator.Subtract: Console.WriteLine("{0} - {1} = {2}", x, y, x - y); break; default: throw new InvalidOperationException(); } }
// simple demo which reads in two rationals and an operator then prints the result static void Main(string[] args) { ConsoleProlog(); while (true) { BigInteger numA = GetNumber(RationalField.FirstNumerator); BigInteger numB = GetNumber(RationalField.FirstDenominator); BigInteger numC = GetNumber(RationalField.SecondNumerator); BigInteger numD = GetNumber(RationalField.SecondDenominator); BigRational rational1 = new BigRational(numA, numB); BigRational rational2 = new BigRational(numC, numD); RationalOperator op = GetOperator(); PerformOperationAndShowResult(rational1, rational2, op); } }