Xây dựng lớp PHANSO có các thông tin: tử số, mẫu số và các phương thức:
- Phương thức thiết lập với 2 tham số (tử số, mẫu số)
- Nạp chồng các toán tử sau
o Toán tử cộng hai phân số (+)
o Toán tử trừ hai phân số (-)
o Toán tử nhân hai phân số (*)
o Toán tử chia hai phân số (/)
o Toán tử in(<<)phân số ra màn hình (dạng: tử số/mẫu số)
o Toán tử nhập (>>)
o Phép toán cộng, trừ, nhân, chiahai phân số
Viết chương trình chính thực hiện nhập hai phân số, tính tổng, tích của chúng và hiển thị kết quả ra màn hình.
#include<iostream>
using namespace std;
class phanso{
private:
inttu,mau;
public:
phanso(intts=0, intms=0);
friend ostream& operator<<(ostream&, phanso);
friend istream& operator>>(istream&, phanso&);
friend phanso rutgon(phanso u);
phanso operator+(phanso);
phanso operator-(phanso);
};
//tìm ước số chung lớn nhất
int uscln(int x, int y){
while(y!=0){
int r=x%y;
x=y;
y=r
}
return x;
}
phanso::phanso(int ts, int ms){
tu=ts;
mau=ms;
}
ostream& operator<<(ostream& os, phanso u){
os<<u.tu<<"/"<<u.mau<<endl;
return os;
}
istream& operator>>(istream& is,phanso &u){
cout<<"Nhap tu so: ";is>>u.tu;
cout<<"Nhap mau so: ";is>>u.mau;
return is;
}
phanso rutgon(phanso u){
phanso q;
q.tu=u.tu/uscln(u.tu,u.mau);
q.mau=u.mau/uscln(u.tu, u.mau);
return q;
}
phanso phanso::operator+(phanso u){
phanso v;
v.tu=this->tu*u.mau+u.tu*this->mau;
v.mau=this->mau*u.mau;
return rutgon(v);
}
phanso phanso::operator-(phanso u){
phanso v;
v.tu=this->tu*u.mau-u.tu*this->mau;
v.mau=this->mau*u.mau;
return rutgon(v);
}
int main(){
phanso p1, p2;
cout<<"Nhap phan so thu nhat:"<<endl;
cin>>p1;
cout<<"Nhap phan so thu hai:"<<endl;
cin>>p2;
cout<<"-------------"<<endl;
cout<<p1<<endl;
cout<<p2<<endl;
cout<<"Tong hai phan so:"<<p1+p2<<endl;
cout<<"Hieu hai phan so:"<<p1-p2;
return0;
}
Ghi chú:sinh viên tiếp tục thực thiện nạp chồng toán tử nhân (*) và chia (/) 2 phân số để hoàn thiện bài trên.
» Tin mới nhất:
» Các tin khác: