Question: Using Visual Studio project, add member functions implementations for the two multiply() member functions declared in Fraction.h. Like the add() function, make sure your multiply()
fraction.h:
#include
class Fraction
{
public: // public interface
Fraction(int numerator_in = 1, int denominator_in = 1); // class constructor with default arguments of 1
int getNumerator() const; // \"accessor\" member functions
int getDenominator() const; // \"const\" means the member function does not change the object's state
std::string toString() const; // returns string version of fraction
float getValue() const; // returns floating point version of fraction
void assign(int numerator2, int denominator2); // assign one fraction to another
void assign(const Fraction& fraction2);
void add(int numerator2, int denominator2); // add two fractions
void add(const Fraction& fraction2);
//Added 2 method declarations for multiply() function
void multiply(int numerator2, int denominator2);
void multiply(const Fraction& fraction2);
private: // member functions that are not part of the public interface
int gcd(int a, int b) const; // greatest common divisor
private: // data members should always be private
int numerator{ 1 };
int denominator{ 1 };
};
here's fraction.cpp:
#include \"Fraction.h\" #include #include
using std::string; using std::to_string;
Fraction::Fraction(int numerator_in, int denominator_in) { assert(denominator != 0); numerator = numerator_in; denominator = denominator_in; } int Fraction::getNumerator() const { return numerator; }
int Fraction::getDenominator() const { return denominator; } std::string Fraction::toString() const { std::string result = std::to_string(numerator) + '/' + std::to_string(denominator); return result; }
float Fraction::getValue() const { float result = float(numerator) / float(denominator); return result; } void Fraction::assign(int numerator2, int denominator2) { assert(denominator != 0); numerator = numerator2; denominator = denominator2; }
void Fraction::assign(const Fraction& fraction2) { assign(fraction2.getNumerator(), fraction2.getDenominator()); }
void Fraction::add(int numerator2, int denominator2) { assert(denominator2 != 0); // lcm(a, b) = (a * b) / gcd(a, b) int denominator3 = (denominator * denominator2) / gcd(denominator, denominator2); // Compute the equivalent fraction numerators int equiv_numerator1 = numerator * (denominator3 / denominator); int equiv_numerator2 = numerator2 * (denominator3 / denominator2); // Add the numerators int numerator3 = equiv_numerator1 + equiv_numerator2; // Simplify the fraction int common_factor = gcd(numerator3, denominator3); numerator = numerator3 / common_factor; denominator = denominator3 / common_factor; }
void Fraction::add(const Fraction& fraction2) { add(fraction2.getNumerator(), fraction2.getDenominator()); } int Fraction::gcd(int a, int b) { while (b != 0) { int old_b = b; b = a % b; a = old_b; } return a; }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
