Rational NUMBER

Define a class for rational numbers. A rational number is a number that can be represented as the quotient of two integers. For example, 1/2, 3/4, 64/2, and so forth are all rational numbers. (By ½, etc we mean the everyday meaning of the fraction, not the integer division this expression would produce in a C++ program).Represent rational numbers as two values of type int, one for the numerator and one for the denominator. Call the class rationalNum Include a constructor with two arguments that can be used to set the member variables of an object to any legitimate value. Also include a constructor that has only a single parameter of type int; call this single parameter whole_number and define the constructor so that the object will be initialized to the rational number whole_number/1. Also include a default constructor that initializes an object to 0    (that is, to 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, -300/-400 are all possible input. The input operator, >>, reads the string 15/32 as  Overload all of the following operators so that they correctly apply to the type rationalNum: ==, <, >, +, -, *, and /.  Write a test program to test your class. [Hints: Two rational numbers a/b and c/d are equal if a*d equals c*b. If b and d are positive numbers, a/b is less than c/d provided a*d is less than c*b.  (a/b + c/d) is given by:Numerator =a*d + c*bDenominator = b*d (a/b – c/d) is given by Numerator = a*d – c*bDenominator = b*d   (a/b * c/d) is given byNumerator = a*cDenominator = b*d (a/b divided by c/d) is g

💡 Buy the answer for only $12 Get it now →

iven byNumerator = a*dDenominator = b*c    ] The numerators and denominators of rational numbers tend to become large, so it is better to normalize intermediate results. This is achieved by calling a method, normalize(), on the number as shown:cout << “The sum of the two numbers is: “ << result.normalize() << endl; Here’s the function that you call to normalize the number. Make it a member function of the rationalNum class. It is called in the driver program to: Display each input number readDisplay the results of the arithmetic operations. rationalNumber rationalNumber::normalize(){  rationalNum temp;  int x,y,z;   x=numerator;  y=denominator;  z=(x*x < y*y)? (z=x):(z=y);  for (int i=2; i*i<=z*z; i++){    while ((x%i)==0 && (y%i)==0 )    {      x=x/i;      y=y/i;      z=z/i;    }  }  if (y<0){    temp.numerator=-x;    temp.denominator=-y;  }  else {    temp.numerator=x;    temp.denominator=y;  }  return temp;} Here’s the output of test run of the driver program using rationalNum objects. E:neu>rationalMain Enter the first value:  2/3 Enter the second value: 3/5 value1 is                       2/3Normalized value1:              2/3 value 2 is:                     3/5Normalized value2:                      3/5 addition                        19/15Normalized sum:         19/15 subtraction                     1/15Normalized difference:  1/15 multiplication                   6/15Normalized product:     2/5 division                        10/9Normalized quotient:    10/9 is 2/3 < 3/5 ?  nois 2/3 > 3/5 ?  yesis 2/3 =  3/5 ?         no Press any key to continue . . .

💡 Buy the answer for only $12 Get it now →