PhanSo

// doc phan so tu tep

#include<iostream>
#include<stdio.h>
#include<fstream>

using namespace std;

//Khai bao lop doi tuong
class PhanSo
{
	private:
		int tu, mau;
		
	public:
	    PhanSo();
	    PhanSo operator+(PhanSo &ps2);
	    void rutGon();
	    
	    //ham ban
	    friend istream& operator>>(istream &fin, PhanSo &ps);
	    friend ostream& operator<<(ostream &cout, PhanSo &ps);
};

//===Chuong trinh chinh===
int main()
{
    //tao doi tuong phan so
    PhanSo ps1, ps2, tong;
    
    //tao doi tuong doc tep
    ifstream finA("phanso1.txt");
    ifstream finB("phanso2.txt");
    
    //doc 2 phan so tu tep tuong tuong
    finA>>ps1;
    finB>>ps2;
    
    cout<<"Chuong trinh tinh tong 2 phan so.\n\n";

    //tinh tong 2 phan so
    tong = ps1 + ps2;
    
    //dua ra man hinh
    cout<<"\nCac phan so khi chua duoc rut gon.";
    cout<<"\nPhan so thu nhat: "; cout<<ps1;
    cout<<"\nPhan so thu hai: "; cout<<ps2;
    cout<<"\nTong 2 phan so khi chua rut gon: "; cout<<tong;
 
    cout<<"\n\nCac phan so khi da duoc rut gon.";
    cout<<"\nPhan so thu nhat: "; ps1.rutGon();
    cout<<ps1;
    cout<<"\nPhan so thu hai: "; ps2.rutGon();
    cout<<ps2;
    cout<<"\nTong 2 phan so: "; tong.rutGon();
    cout<<tong;

	cout<<endl;
	return 0;
}
//===Dinh nghia ham===
PhanSo::PhanSo():tu(0), mau(1)
{
    
}

PhanSo PhanSo::operator+(PhanSo &ps2)
{
    PhanSo tg;
    if(mau == ps2.mau)
    {
        tg.tu = tu + ps2.tu;
        tg.mau = mau;
    }
    else
    {
        tg.tu = (mau * ps2.tu) + (ps2.mau * tu);
        tg.mau = mau * ps2.mau;
    }
        
    return tg;
}

void PhanSo::rutGon()
{
	int a = tu;
	int b = mau;
	
	while(b!=0)
	{
		int r = a%b;
		a = b;
		b = r;
	}
	
	tu /= a;
	mau /= a;
}

//ham ban
istream& operator>>(istream &fin, PhanSo &ps)
{
    //doc tu va mau cua phan so tu tep
    fin>>ps.tu;
    fin>>ps.mau;
    
    return fin;
}

ostream& operator<<(ostream &cout, PhanSo &ps)
{
    cout<<ps.tu<<"/"<<ps.mau;
    
    return cout;
}



Last updated