Here is the start of my rational class program. The idea is to add, subtract, multiply and divide two fractions. You can see I've declared 1/3 as the first fraction and 2/5 as the second. However I'm not sure how to point to the 1 separate of the 3, and the 2 separate of the 5, to perform the addition correctly. Do I have to set up numerator1 and numerator2, etc?
Also, I have a simplify function to reduce the fraction. Currently the first fraction will reduce (for example, if I replaces 1/3 with 4/8 it would return 1/2) but the second will not, and I'm not sure why.
Code:#include <iostream> using namespace std; class Rational { public: Rational(int n=0,int d=1) { numerator = n; denominator = d; } void print() { cout << numerator << "/" << denominator << endl; } void operator = (Rational c) { numerator = c.numerator; denominator = c.denominator; } void Rational::simplify() // to simplify the fraction { int n=(int)this->numerator; int d=(int)this->denominator; int i=2; while((i<=n) && (n!=1)) { while((n/i==(int)n/i) && (d/i ==(int)d/i)) { n/=i; d/=i; } i++; } numerator=n; denominator=(n==0)?1:d; } Rational operator + (Rational c) // adds fractions { Rational::simplify(); Rational t; t.numerator = numerator + c.numerator; t.denominator = denominator + c.denominator; return t; } Rational operator - (Rational c) // subtracts fractions { Rational::simplify(); Rational t; t.numerator = numerator - c.numerator; t.denominator = denominator - c.denominator; return t; } Rational operator * (Rational c) // multiplies fractions { Rational::simplify(); Rational t; t.numerator = numerator * c.numerator; t.denominator = denominator * c.denominator; return t; } Rational operator / (Rational c) // divides fractions { Rational::simplify(); Rational t; t.numerator = numerator / c.numerator; t.denominator = denominator / c.denominator; return t; } private: int numerator; int denominator; }; // end class Rational int main() { Rational a(1,3),b(2,5); // a is (1/3); b is (2/5) // a reduces, b does not Rational z; // test variable to check default constructor Rational c; // instantiates variable c to class Rational initializing to zero c = a + b; // currently adds two numerators (1 + 2) and two denominators (3 + 5) Rational d; // instantiates d d = a - b; // subtracts a from b Rational e; // e = a*b; Rational f; f = a/b; cout << "First fraction is: " << endl; a.print(); cout << "\nSecond fraction is: " << endl; b.print(); cout << "\nAdding first fraction to second fraction: " << endl; c.print(); cout << "\nSubracting first fraction from second fraction: " << endl; d.print(); cout << "\nMultiplying first fraction to second fraction: " << endl; e.print(); cout << "\nDividing first fraction by second fraction: " << endl; f.print(); cout << "\nTest default fraction: " << endl; z.print(); return 0; }



LinkBack URL
About LinkBacks



CornedBee