Đề bài : ThucHanh10_Class_NapChongToanTu.pdf
Cài đặt lớp Tien bao gồm phần nguyên (đồng) & phần thập phân (xu). Ví dụ 4.05 thì phần nguyên (đồng) là 4 còn phần thập phân (xu) là 5. Phần thập phân trong khoảng từ 1 đến 99. Lớp này cũng cần biến xác định dấu (+/-) tương ứng với lượng tiền dương và âm trong tài khoản. Xây dựng các hàm :
1) Hàm khởi tạo và hàm hủy. Hàm khởi tạo cần hổ trợ chuyển đổi kiểu tự động
2) Hàm quy chuẩn. Ví dụ 0.100 cần quy chuẩn thành 1.00 (1 đồng = 100 xu)
3) Định nghĩa các toán tử sau đây :
a. Toán tử << & >> để in và nhập cho lớp Tien (sử dụng trả về tham chiếu)
b. Toán tử cộng, trừ và đổi dấu.
c. Toán tử nhân, chia
d. Toán tử tăng (++), giảm (--). Ví dự $4.05++ = $5.05
e. Toán tử so sánh <, > , >=, <=, ==, != . Kết quả trả về kiểu bool
______________________________________________________________________
Code : http://pastebin.com/HtLmta0P hoặc thuchanh10-bai2.cpp
______________________________________________________________________
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
class Tien
{
public:
Tien();
Tien(double,double);
~Tien();
double getdong()
{
return this->dong;
};
double getxu()
{
return this->xu;
};
void setdong(int dong)
{
this-> dong= dong;
}
void setxu(double xu)
{
this->xu= xu;
}
void setTien(double, double);
friend istream& operator>> (istream&, Tien&);
friend ostream& operator<< (ostream&, Tien&);
// truoc ++t
const Tien operator++();
// sau t++
const Tien operator++(int);
// truoc --t
const Tien operator--();
// sau t--
const Tien operator--(int);
friend const Tien operator+ (const Tien&, const Tien&);
friend const Tien operator- (const Tien&, const Tien&);
friend const Tien operator- (const Tien&);
friend bool operator< (const Tien&, const Tien&);
friend bool operator> (const Tien&, const Tien&);
friend bool operator!= (const Tien&, const Tien&);
private:
double dong;
double xu;
void quyChuanTien();
};
const Tien operator* (const Tien&, const Tien&);
const Tien operator/ (const Tien&, const Tien&);
const Tien operator% (const Tien&, const Tien&);
bool operator<= (const Tien&, const Tien&);
bool operator>= (const Tien&, const Tien&);
bool operator== (const Tien&, const Tien&);
Tien::Tien()
{
dong = 0;
xu = 0;
};
Tien::~Tien()
{
};
Tien::Tien(double x,double y)
{
this->dong=x;
this->xu=y;
};
void Tien::quyChuanTien()
{
double tong = dong*100 + xu;
dong = tong/100;
xu = tong - dong*100;
};
void Tien::setTien(double a, double b)
{
dong= a;
xu= b;
quyChuanTien();
};
istream& operator>> (istream& nhap,Tien& x)
{
cout << "dong = ";
nhap>>x.dong;
cout << "xu = ";
nhap>>x.xu;
x.quyChuanTien();
return nhap;
};
ostream& operator<< (ostream& xuat, Tien& x)
{
x.quyChuanTien();
xuat << fixed << setprecision(2) << x.dong + x.xu/100;
return xuat;
};
const Tien Tien::operator++()
{
Tien x;
x.dong= dong;
x.dong++;
x.quyChuanTien();
return x;
};
const Tien Tien::operator++(int)
{
double a = dong;
double b = xu;
a++;
return Tien(a, b);
};
const Tien Tien::operator--()
{
Tien x;
x.dong= dong;
x.dong++;
x.quyChuanTien();
return x;
};
const Tien Tien::operator--(int)
{
double a = dong;
double b = xu;
a--;
return Tien(a, b);
};
const Tien operator+ (const Tien& a, const Tien& b)
{
Tien c;
c.dong = a.dong + b.dong;
c.xu = a.xu + b.xu;
c.quyChuanTien();
return c;
};
const Tien operator- (const Tien& a, const Tien& b)
{
Tien c,d;
c= a; d= b;
double x= c.dong*100 + c.xu - d.dong*100 - d.xu;
c.dong= x/100;
c.xu= x- c.dong*100;
c.quyChuanTien();
return c;
};
const Tien operator- (const Tien& a)
{
Tien b;
b= a;
b.dong *= (-1);
b.xu *= (-1);
return b;
};
bool operator< (const Tien& a, const Tien& b)
{
Tien c,d;
c= a; d= b;
double sosanh= c.dong*100 + c.xu - d.dong*100 - d.xu;
if ( sosanh<0 ) return true;
else return false;
};
bool operator> (const Tien& a, const Tien& b)
{
Tien c,d;
c= a; d= b;
double sosanh= c.dong*100 + c.xu - d.dong*100 - d.xu;
if ( sosanh>0 ) return true;
else return false;
};
bool operator!= (const Tien& a, const Tien& b)
{
Tien c,d;
c= a; d= b;
double sosanh= c.dong*100 + c.xu - d.dong*100 - d.xu;
if ( sosanh != 0 ) return true;
else return false;
};
const Tien operator* (const Tien& a, const Tien& b)
{
Tien c,d;
c= a; d= b;
double c_ = c.getdong()+ c.getxu()/100;
double d_ = d.getdong() + d.getxu()/100;
double tong= c_ * d_;
double dong_ = int (tong);
double xu_ = (tong-dong_)*100;
return Tien(dong_,xu_);
};
const Tien operator/ (const Tien& a, const Tien& b)
{
Tien c,d;
c= a; d= b;
double c_ = c.getdong()+ c.getxu()/100;
double d_ = d.getdong() + d.getxu()/100;
double tong= c_ / d_;
double dong_ = int (tong);
double xu_ = (tong-dong_)*100;
return Tien(dong_,xu_);
};
const Tien operator% (const Tien& a, const Tien& b)
{
Tien c,d,e;
c= a; d= b;
if ( c<d ) return c;
else if ( c == d ) return e;
else
{
while ( c > d )
{
c = c-d;
if ( c==d ) return e;
}
return c;
}
};
bool operator<= (const Tien& a, const Tien& b)
{
Tien c,d;
c= a; d= b;
if ( c<d || c==d ) return true;
else return false;
};
bool operator>= (const Tien& a, const Tien& b)
{
Tien c,d;
c= a; d= b;
if ( c>d || c==d ) return true;
else return false;
};
bool operator== (const Tien& a, const Tien& b)
{
Tien c,d;
c=a; d=b;
double dong_ = c.getdong()* d.getxu() - d.getdong()*c.getxu();
double xu_ = c.getxu() - d.getxu();
if ( dong_ == 0 && xu_ == 0 ) return true;
else return false;
};
int main()
{
Tien a,b,c,d;
cout << "Nhap tien:" << endl;
cin >> a ; cout << "a = " << a << endl;
cin >> b ; cout << "b = " << b << endl;
c = a+b; cout << a << " + " << b << " = " << c << endl;
c = a-b; cout << a << " - " << b << " = " << c << endl;
c = a*b; cout << a << " * " << b << " = " << c << endl;
c = a/b; cout << a << " / " << b << " = " << c << endl;
if ( a>b )
{
cout << a << " > " << b << endl;
}
else
{
if ( a<b )
{
cout << a << " < " << b << endl;
}
else
{
cout << a << " = " << b << endl;
}
}
c=a++; cout << a << "++ = " << c << endl;
c=a--; cout << a << "-- = " << c << endl;
system("PAUSE");
return EXIT_SUCCESS;
}