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