Question

In: Computer Science

9.6 (Rational Class) Create a class called Rational (separate the files as shown in the chapter)...

9.6 (Rational Class)

Create a class called Rational (separate the files as shown in the chapter) for performing arithmetic with fractions. Write a program to test your class. Use integer variables to represent the private data of the class-the numerator and the denominator. Provide a constructor that enables an object of this class to be initialized when it's declared. The constructor should contain default values in case no initializers are provided and should store the fraction in reduced form. For example, the fraction 2/4 would be stored in the object as 1 in the numerator and 2 in the denominator. Provide public member functions that perform each of the following tasks:

  1. add - Adds two Rational numbers. The result should be stored in reduced form.
  2. subtract - Subtracts two Rational numbers. Store the result in reduced form.
  3. multiply - Multiples two Rational numbers. Store the result in reduced form.
  4. divide - Divides two Rational numbers. The result should be stored in reduced form.
  5. (toRationalString - optional uses iostream from previous chapter - extra credit) - Returns a string representation of a Rational number in the form a/b, where a is the numerator and b is the denominator.
  6. display - Display the Rational number a/b.
  7. toDouble - Returns the Rational number as a double.

(make sure the driver tests out all the functions)

Solutions

Expert Solution

ANSWER :-

GIVEN THAT :-

METHOD :1

import math
import fractions


def add(fr1, fr2):
print('{} + {} = {}'.format(fr1.num, fr2.num, fr1.num + fr2.num))


def subtract(fr1, fr2):
print('{} - {} = {}'.format(fr1.num, fr2.num, fr1.num - fr2.num))


def multiply(fr1, fr2):
print('{} * {} = {}'.format(fr1.num, fr2.num, fr1.num * fr2.num))


def divide(fr1, fr2):
print('{} / {} = {}'.format(fr1.num, fr2.num, fr1.num / fr2.num))


def toRationalString(fr):
print(str(fr.num))


def display(fr):
print(fr.num)


def toDouble(fr):
print(float(fr.num))
#Python's built-in float type has double precision


class Rational:
def __init__(self, nr=0, dr=1):
gcd = math.gcd(nr, dr)
self.__nr = nr // gcd
self.__dr = dr // gcd
self.num = fractions.Fraction(self.__nr, self.__dr)


n1 = Rational(5, 3)
n2 = Rational(7, 3)

add(n1, n2)
subtract(n1, n2)
multiply(n1, n2)
divide(n1, n2)

toRationalString(n1)
toRationalString(n2)

display(n1)
display(n2)

toDouble(n1)
toDouble(n2)

OUT PUT:-

METHOD :2

Rational.h
#ifndef RATIONAL_H
#define RATIONAL_H
class Rational
{
public:
Rational( int = 0, int = 1 ); // default constructor
Rational addition( const Rational & ); // function addition
Rational subtraction( const Rational & ); // function subtraction
Rational multiplication( const Rational & ); // function multi.
Rational division( const Rational & ); // function division
void printRational (); // print rational format
void printRationalAsDouble(); // print rational as double format

private:
int numerator; // integer numerator
int denominator; // integer denominator
void reduction(); // utility function
}; // end class Rational
#endif

Rational.cpp
// Member-function definitions for class Rational.
#include <iostream>
using std::cout;
#include "Rational.h" // include definition of class Rational
Rational::Rational( int n, int d )
{
numerator = n; // sets numerator
denominator = d; // sets denominator
reduction(); // store the fraction in reduced form
} // end Rational constructor
Rational Rational::addition( const Rational &a )
{
Rational t; // creates Rational object
t.numerator = a.numerator * denominator;
t.numerator += a.denominator * numerator;
t.denominator = a.denominator * denominator;
t.reduction(); // store the fraction in reduced form
return t;
} // end function addition
Rational Rational::subtraction( const Rational &s )
{
Rational t; // creates Rational object
t.numerator = s.denominator * numerator;
t.numerator -= denominator * s.numerator;
t.denominator = s.denominator * denominator;
t.reduction(); // store the fraction in reduced form
return t;
} // end function subtraction
Rational Rational::multiplication( const Rational &m )
{
Rational t; // creates Rational object
t.numerator = m.numerator * numerator;
t.denominator = m.denominator * denominator;
t.reduction(); // store the fraction in reduced form
return t;
} // end function multiplication
Rational Rational::division( const Rational &v )
{
Rational t; // creates Rational object
t.numerator = v.denominator * numerator;
t.denominator = denominator * v.numerator;
t.reduction(); // store the fraction in reduced form
return t;
} // end function division
void Rational::printRational ()
{
if ( denominator == 0 ) // validates denominator
cout << "\nDIVIDE BY ZERO ERROR!!!" << '\n';
else if ( numerator == 0 ) // validates numerator
cout << 0;
else
cout << numerator << '/' << denominator;
} // end function printRational
void Rational::printRationalAsDouble()
{
cout << static_cast< double >( numerator ) / denominator;
} // end function printRationalAsDouble
void Rational::reduction()
{
int largest;
largest = numerator > denominator ? numerator : denominator;
int gcd = 0; // greatest common divisor
for ( int loop = 2; loop <= largest; loop++ )
if ( numerator % loop == 0 && denominator % loop == 0 )
gcd = loop;
if (gcd != 0)
{
numerator /= gcd;
denominator /= gcd;
} // end if
} // end function reduction

Solution.cpp
#include <iostream>
using std::cout;
using std::endl;
#include "Rational.h" // include definition of class Rational
int main()
{
Rational c( 2, 6 ), d( 7, 8 ), x; // creates three rational objects
c.printRational(); // prints rational object c
cout << " + ";
d.printRational(); // prints rational object d
x = c.addition( d ); // adds object c and d; sets the value to x
cout << " = ";
x.printRational(); // prints rational object x
cout << '\n';
x.printRational(); // prints rational object x
cout << " = ";
x.printRationalAsDouble(); // prints rational object x as double
cout << "\n\n";
c.printRational(); // prints rational object c
cout << " - ";
d.printRational(); // prints rational object d
x = c.subtraction( d ); // subtracts object c and d

cout << " = ";
x.printRational(); // prints rational object x
cout << '\n';
x.printRational(); // prints rational object x
cout << " = ";
x.printRationalAsDouble(); // prints rational object x as double
cout << "\n\n";
c.printRational(); // prints rational object c
cout << " x ";
d.printRational(); // prints rational object d
x = c.multiplication( d ); // multiplies object c and d

cout << " = ";
x.printRational(); // prints rational object x
cout << '\n';
x.printRational(); // prints rational object x
cout << " = ";
x.printRationalAsDouble(); // prints rational object x as double
cout << "\n\n";
c.printRational(); // prints rational object c
cout << " / ";
d.printRational(); // prints rational object d
x = c.division( d ); // divides object c and d

cout << " = ";
x.printRational(); // prints rational object x
cout << '\n';
x.printRational(); // prints rational object x
cout << " = ";
x.printRationalAsDouble(); // prints rational object x as double
cout << endl;
return 0;
} // end main

****** PLEASE LIKE *****


Related Solutions

Must be coded in C#. 10.8 (Rational Numbers) Create a class called Rational for performing arithmetic...
Must be coded in C#. 10.8 (Rational Numbers) Create a class called Rational for performing arithmetic with fractions. Write an app to test your class. Use integer variables to represent the private instance variables of the class—the numerator and the denominator. Provide a constructor that enables an object of this class to be initialized when it’s declared. The constructor should store the fraction in reduced form. The fraction 2/4 is equivalent to 1/2 and would be stored in the object...
Create a class Student (in the separate c# file but in the project’s source files folder)...
Create a class Student (in the separate c# file but in the project’s source files folder) with those attributes (i.e. instance variables): Student Attribute Data type (student) id String firstName String lastName String courses Array of Course objects Student class must have 2 constructors: one default (without parameters), another with 4 parameters (for setting the instance variables listed in the above table) In addition Student class must have setter and getter methods for the 4 instance variables, and getGPA method...
Objectives: Use class inheritance to create new classes. Separate class definition and implementation in different files....
Objectives: Use class inheritance to create new classes. Separate class definition and implementation in different files. Use include guard in class header files to avoid multiple inclusion of a header. Tasks: In our lecture, we wrote a program that defines and implements a class Rectangle. The source code can be found on Blackboard > Course Content > Classes and Objects > Demo Program 2: class Rectangle in three files. In this lab, we will use class inheritance to write a...
Task Create a class called Mixed. Objects of type Mixed will store and manage rational numbers...
Task Create a class called Mixed. Objects of type Mixed will store and manage rational numbers in a mixed number format (integer part and a fraction part). The class, along with the required operator overloads, should be written in the files mixed.h and mixed.cpp. Details and Requirements Finish Lab 2 by creating a Mixed class definition with constructor functions and some methods. The Mixed class should have public member functions Evaluate(), ToFraction(), and Simplify(). The Evaluate() function should return a...
Task CPP Create a class called Mixed. Objects of type Mixed will store and manage rational...
Task CPP Create a class called Mixed. Objects of type Mixed will store and manage rational numbers in a mixed number format (integer part and a fraction part). The class, along with the required operator overloads, should be written in the files mixed.h and mixed.cpp. Details and Requirements Finish Lab 2 by creating a Mixed class definition with constructor functions and some methods. The Mixed class should have public member functions Evaluate(), ToFraction(), and Simplify(). The Evaluate() function should return...
Define a class called Rational for rational numbers. Arational number is a number that can...
Define a class called Rational for rational numbers. A rational number is a number that can be represented as the quotient of two integers. For example, /2, 3/4, 64/2, and so forth are all rational numbers.Represent rational numbers as two private values of type int, numfor the numerator and den for the denominator. The class has a default constructor with default values (num = 0,den = 1), a copy constructor, an assignment operator and three friend functions for operator overloading...
1. create a class called ArrayStack that is a generic class. Create a main program to...
1. create a class called ArrayStack that is a generic class. Create a main program to read in one input file and print out the file in reverse order by pushing each item on the stack and popping each item off to print it. The two input files are: tinyTale.txt and numbers.txt. Rules: You cannot inherit the StackofStrings class. 2. Using your new ArrayStack, create a new class called RArrayStack. To do this, you need a) remove the capacity parameter...
You are to write a class named Rectangle. You must use separate files for the header...
You are to write a class named Rectangle. You must use separate files for the header (Rectangle.h) and implementation (Rectangle.cpp) just like you did for the Distance class lab and Deck/Card program. You have been provided the declaration for a class named Point. Assume this class has been implemented. You are just using this class, NOT implementing it. We have also provided a main function that will use the Point and Rectangle classes along with the output of this main...
Create a new folder called CSCI130_A3_yourname. Create all of the files indicated below within this folder....
Create a new folder called CSCI130_A3_yourname. Create all of the files indicated below within this folder. For this assignment you will be creating a total of 2 classes that meet the definitions below. This assignment will allow the user to enter in the coefficients for a polynomial function of degree 2. The user will then be asked to enter a number. The program will use that number as an argument to the function, and will print the corresponding function value....
Question 1 Download the files Book.java and BookInfo.txt from Content->Chapter 12 Quiz Files. Create a BookDriver.java...
Question 1 Download the files Book.java and BookInfo.txt from Content->Chapter 12 Quiz Files. Create a BookDriver.java class with a main method. In the main method, create an ArrayList of Book objects, read in the information from BookInfo.txt and create Book objects to populate the ArrayList. After all data from the file is read in and the Book objects added to the ArrayList- print the contents of the ArrayList. Paste your BookDriver.java text (CtrlC to copy, CtrlV to paste) into the...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT