Do Exercise 5 on page 674 in Savitch: Adapt the Rational class you defined in question 2 of this assignment as follows: Ensure that you have three constructors: a constructor with two arguments that can be used to set the member variables of an object to any legitimate values; a constructor with a single parameter of type int called whole_number so that the constructor initialises the object to the rational number whole_number/1; a default constructor that initialises an object to 0 (that is 0/1). Overload the input and output operators >> and <<. Numbers are to be input and output in the form 1/2, 15/32, 300/401, and so forth. Note that the numerator, the denominator, or both may contain a minus sign, so -1/2, 15/-32, and -300/-401 are also possible inputs. Overload all of the following operators so that they correctly apply to the type Rational: ==, <, <=, >, >=, +, -, *, and /. Also write a test program to test your class. Hints: Include a function to normalize the values stored so that, after normalization, the denominator is positive and the numerator and denominator are as small as possible. For example, after normalization 4/-8 would be presented the same as -1/2. The rational number can be reduced to its smallest value by computing the greatest common divisor (GCD) of the numerator and denominator, and then dividing each by this number. A recursive definition to compute the GCD of two integers follows: | n if n divides m gcd(m,n) = | | gcd(n, remainder of m divided by n) otherwise