You are on page 1of 4

#include <iostream>

using namespace std;

class PhanSo
{
private:
int tuso;
int mauso;
public:
//PhanSo() {} ;
PhanSo(int t=0 , int m =1) //
{
GanTu(t);
GanMau(m) ;
}
PhanSo (const PhanSo &p);
~PhanSo() {};
int LayTu();//
int LayMau();//
void GanTu(int t);//
void GanMau(int m); //
void Nhap();
void Xuat() ;
bool operator > (PhanSo&);
PhanSo operator + (PhanSo);
PhanSo operator - (PhanSo);
};
PhanSo :: PhanSo(const PhanSo &p) {}

int PhanSo ::LayTu()


{
return tuso ;
}
int PhanSo ::LayMau()
{
return mauso ;
}
void PhanSo :: GanTu(int t)
{
tuso = t;
}
void PhanSo :: GanMau(int m)
{
mauso = m;
}
void PhanSo::Nhap()
{
cout << "Nhap tu so: ";
cin >> tuso;
cout << "Nhap mau so: ";
cin >> mauso;
}

void PhanSo::Xuat()
{
cout << "Phan so: " << tuso << " / " << mauso << '\n';
}

bool PhanSo::operator>(PhanSo& other)


{
double valueThis = (double)(this ->tuso) / this -> mauso ;
/*static_cast<double>(tuso) / mauso ;*/
double valueOther = (double)other.LayTu() /
other.LayMau();//static_cast<double>(other.LayTu()) / other.LayMau();
return valueThis > valueOther;
}

PhanSo PhanSo::operator+(PhanSo b)
{
PhanSo c;
if (mauso == b.LayMau())
{
c.GanTu(tuso + b.LayTu());
c.GanMau(mauso);
return c;
}
// Xử lý trường hợp khác mẫu số
// ...
else {
c.GanTu(tuso*b.LayMau()+ b.LayTu()*mauso);
c.GanMau(mauso*b.LayMau());
return c;
}

PhanSo PhanSo::operator-( PhanSo b)


{
PhanSo c;
if (mauso == b.LayMau())
{
c.GanTu(tuso - b.LayTu());
c.GanMau(mauso);
return c;
}
// Xử lý trường hợp khác mẫu số
// ...
else {
c.GanTu(tuso*b.LayMau()- b.LayTu()*mauso);
c.GanMau(mauso*b.LayMau());
return c;
}
}

class DSPhanSo
{
private:
PhanSo* ds; // Mảng các phân số
int n; // Số lượng phân số trong mảng

public:
DSPhanSo(int size)
{
n = size;
ds = new PhanSo[n];
}

~DSPhanSo()
{
delete[] ds;
}

void NhapDS()
{
for (int i = 0; i < n; ++i)
{
cout << "Nhap phan so thu " << i + 1 << ":\n";
ds[i].Nhap();
}
}
void XuatDS()
{
for (int i = 0; i < n; ++i)
{
cout << "Phan so thu " << i + 1 << ":\n";
ds[i].Xuat();
}
}
PhanSo TimMax()
{
PhanSo maxPhanSo = ds[0];
for (int i = 1; i < n; ++i)
{
if (ds[i] > maxPhanSo)
maxPhanSo = ds[i];
}
return maxPhanSo;
}

PhanSo TinhTong()
{
PhanSo tong;
for (int i = 0; i < n; ++i)
{
tong = tong + ds[i];
}
return tong;
}
};

int main()
{
int n;
cout << "Nhap so luong phan so: ";
cin >> n;

DSPhanSo ds(n);
ds.NhapDS();
ds.XuatDS();

// Sai yeu cau bai toan


PhanSo maxPhanSo = ds.TimMax();
cout << "Phan so co gia tri lon nhat:\n";
maxPhanSo.Xuat();

PhanSo tong = ds.TinhTong();


cout << "Tong cac phan so:\n";
tong.Xuat();

return 0;
}

You might also like