Server IP : 172.16.15.8 / Your IP : 18.191.62.68 Web Server : Apache System : Linux zeus.vwu.edu 4.18.0-553.27.1.el8_10.x86_64 #1 SMP Wed Nov 6 14:29:02 UTC 2024 x86_64 User : apache ( 48) PHP Version : 7.2.24 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0705) : /home/jwang/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
// overoading operators: +, -, *, /, ... #include <iostream> using namespace std; class Fraction { int numerator; int denominator; void Reduce() { int n = numerator; int d = denominator; while( d != 0 ) { int r = n % d; n = d; d = r; } if ( n != 0 ) { numerator /= n; denominator /= n; } if (denominator < 0) { numerator *= (-1); denominator *= (-1); } return; } public: Fraction() { numerator = 0; denominator = 1; } Fraction(int n, int d) { numerator = n; denominator = d; } void Set(int n, int d) { numerator = n; denominator = d; } void Print() const { cout << numerator << '/' << denominator; } Fraction operator+ (Fraction f) { Fraction t; int n; int d; n = numerator*f.denominator + denominator*f.numerator; d = denominator*f.denominator; t.Set(n, d); t.Reduce(); return t; } Fraction operator- (Fraction f) { Fraction t; int n, d; n = (numerator*f.denominator) - (denominator*f.numerator); d = denominator*f.denominator; t.Set(n, d); t.Reduce(); return t; } Fraction operator* (Fraction f) { Fraction t; int n, d; n = numerator*f.numerator; d = denominator*f.denominator; t.Set(n, d); t.Reduce(); return t; } Fraction operator/ (Fraction f) { Fraction t; int n, d; n = numerator*f.denominator; d = denominator*f.denominator; t.Set(n, d); t.Reduce(); return t; } }; int main() { // ex. p.134 (a) Fraction x(1, 2); Fraction y(3, 4); Fraction z = x + y; cout <<"\n(a)\n"; x.Print(); cout <<" + "; y.Print(); cout << " = "; z.Print(); cout <<"\n"; cout << "********************************************" << endl; Fraction t1, t(5, 6); // t = 5/6 t1 = y * t; z = x + t1; cout <<"\n(b)\n"; x.Print(); cout <<" + "; y.Print(); cout << " * "; t.Print(); cout << " = "; z.Print(); cout <<"\n"; cout << "********************************************" << endl; return 0; }