RationalNumber class 的运算符重载

    xiaoxiao2021-04-15  28

    //Rational.h #ifndef RATIONAL_H #define RATIONAL_H class Rational {  public:   Rational( int = 0, int = 1 );      Rational operator+( const Rational & ) const;   Rational operator-( const Rational & ) const;   Rational operator*( const Rational & ) const;   Rational operator/( const Rational & ) const;   bool operator==( const Rational & ) const;   bool operator!=( const Rational & ) const;   bool operator<( const Rational & ) const;   bool operator<=( const Rational & ) const;   bool operator>( const Rational & ) const;   bool operator>=( const Rational & ) const;      void printRational ();     private:   int numerator;   int denominator;   void reduction(); }; #endif // Rational.cpp #include <iostream> #include "Rational.h" using namespace std; Rational::Rational( int n, int d ) {  numerator = n;  denominator = d;  reduction(); } Rational Rational::operator+( const Rational &a ) const{  Rational t;  t.numerator = a.numerator * denominator;  t.numerator += a.denominator * numerator;  t.denominator = a.denominator * denominator;  t.reduction();  return t; } Rational Rational::operator-( const Rational &s ) const{  Rational t;  t.numerator = s.denominator * numerator;  t.numerator -= denominator * s.numerator;  t.denominator = s.denominator * denominator;  t.reduction();  return t; } Rational Rational::operator*( const Rational &m ) const{     Rational t;  t.numerator = m.numerator * numerator;  t.denominator = m.denominator * denominator;  t.reduction();  return t; } Rational Rational::operator/( const Rational &v ) const{  Rational t;  t.numerator = v.denominator * numerator;  t.denominator = denominator * v.numerator;  t.reduction();  return t; } bool Rational::operator==( const Rational &a ) const{     if ( numerator == a.numerator && denominator == a.denominator)         return true;     else         return false; } bool Rational::operator!=( const Rational &b ) const{  if ( numerator != b.numerator || denominator != b.denominator)      return true;     else         return false; } bool Rational::operator<( const Rational &c ) const{     if ( numerator / denominator < c.numerator / c.denominator)         return true;     else         return false;     } bool Rational::operator<=( const Rational &d ) const{     if ( numerator / denominator <= d.numerator / d.denominator)         return true;     else         return false; } bool Rational::operator>( const Rational &e ) const{  if ( numerator / denominator > e.numerator / e.denominator)         return true;     else         return false; } bool Rational::operator>=( const Rational &f ) const{  if ( numerator / denominator >= f.numerator / f.denominator)         return true;     else         return false;  }   void Rational::printRational () {  if ( denominator == 0 )   cout << "\nDIVIDE BY ZERO ERROR!!!" << '\n';  else if ( numerator == 0 )   cout << 0;  else   cout << numerator << '/' << denominator; }    void Rational::reduction() {  int largest;  largest = numerator > denominator ? numerator : denominator;  int gcd = 0;  for ( int loop = 2; loop <= largest; loop++ )   if ( numerator % loop == 0 && denominator % loop == 0 )    gcd = loop;  if (gcd != 0) {   numerator /= gcd;   denominator /= gcd;  } } //main.cpp #include <iostream> #include "Rational.h" using namespace std; int main() {    Rational c( 3, 2 ), d( 5, 9 ), x;    c.printRational();    cout << " + " ;    d.printRational();    cout << " = ";    x = c + d;    x.printRational();    cout << '\n';    c.printRational();    cout << " - " ;    d.printRational();    cout << " = ";    x = c - d;    x.printRational();    cout << '\n';    c.printRational();    cout << " * " ;    d.printRational();    cout << " = ";    x = c * d;    x.printRational();    cout << '\n';    c.printRational();    cout << " / " ;    d.printRational();    cout << " = ";    x = c / d;    x.printRational();    cout << '\n';    c.printRational();    cout << " is:\n";    cout << ( ( c > d ) ? "  > " : "  <= " );    d.printRational();    cout << " according to the overloaded > operator\n";    cout << ( ( c < d ) ? "  < " : "  >= " );    d.printRational();    cout << " according to the overloaded < operator\n";    cout << ( ( c >= d ) ? "  >= " : "  < " );    d.printRational();    cout << " according to the overloaded >= operator\n";    cout << ( ( c <= d ) ? "  <= " : "  > " );    d.printRational();    cout << " according to the overloaded <= operator\n";      cout << ( ( c == d ) ? "  == " : "  != " );    d.printRational();    cout << " according to the overloaded == operator\n";    cout << ( ( c != d ) ? "  != " : "  == " );    d.printRational();    cout << " according to the overloaded != operator" << endl; }
    转载请注明原文地址: https://ju.6miu.com/read-671927.html

    最新回复(0)