TUQNG DANH MỤC BẢNG Bảng 1 - Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thức của lớp PhanSo.... 14 Bảng 3 - Thực hiện xây dựng lớp, khai báo các thuộc tính, phương thức của
IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
Bài tập 2 xây dựng lớp số phức
* Phuong thirc: SoPhuc(), SoPhuc (int thuc, int ao) ằ Thực hiện cỏc phương thức operator: +, -, ”, /, ==, l=, >>, =(is: istream&, ps: SoPhuc&): istream + friend ostream& operator(istream& is, SoPhuc& ps) { cout > ps.dThuc; cout > ps.dAo; return is;
} friend ostream& operator(ostream& os, SoPhuc& ps): ô _ Phương thức này được sử dụng đề xuất cỏc giỏ trị trong lớp SoPhuc từ một luồng dữ liệu đầu vào như ““cout” và dùng toán tử “(ostream& os, SoPhuc& ps)
IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG so phuc pl: phan thuc: 10 phan ao: 2 so phuc p2: phan thuc: 25 phan ao: 2 hai so phuc: 35i + 4 hai so phuc: -15 hai so phuc: 246i + 70 Thuong hai so phuc: 6
Bang 4 - Xay dung ham main()
#include "SoPhuc.h" using namespace std; int main() { SoPhuc p1, p2, p; cout p2; cout TinhNgay( ngay2 TinhNgay hieu = abs(ngay1 ngay2 hieu;
Hình 61 - Mô t¿ phương thức operator-(Ngay ThangNam& ps):
- _ Phương thức operator++(): ô _ Phương thức này thực hiện cộng thờm một ngày vào ngày thỏng năm rồi in ra giá trị mới
NgayThangNam NgayThangNam: :operator++() { iNgay++; f (iThang == 2 iNam X 4 9 && iNam 198 != 9 iNam X 400 là c7) 29 pM) oo iNgay 1; iThang == 1 iThang == 3 iThang == 5 iThang == 7 iThang == 8 iThang == 19 iNgay > 31) {
1Thang++; iNgay = 1; iNgay > 30 iThang++; iNgay = 1;
Hình 62 - Mô t¿ phương thức operator++()
- _ Phương thức operator (): ô _ Phương thức này thực hiện trừ thờm một ngày vào ngày thỏng năm rồi in ra giỏ trị mới
37|Page this->iNgay - lì 0l bool isLeapYear = (iNam % 4 = if (isLeapYear) if (iNgay iThang iNgay 29; else if (iThang == iThang == 4 iThang == iThang == iThang == iThang = if (iNgay Í iThang iNgay = 31; iThang == 1 iNgay iThang iNgay 1Nam iNgay iThang iNgay return *this;
Hình 63 - Mô t¿ phương thc operator {)
- _ Phương thức operator==(Ngay ThangNam& ps): ô _ Phương thức này thực hiện kiểm tra xem hai đối tượng cú cựng ngày, thỏng và năm không Nếu có, nó trả về true, ngược lai tra vé false
II NgayThangNam: :operator==(NgayThangNam& ps) { return (iNgay == ps.iNgay && iThang == ps.iThang && iNam == ps.iNam) ;
Hình 64 - Mô t¿ phương thức thức operator==(NgayThangNam& ps)
- _ Phương thức operatorlI=(NgayThangNam& ps): ô _ Phương thức này thực hiện kiểm tra xem hai đối tượng cú khỏc ngày, thỏng và năm không Nếu có, nó trả về true, ngược lai tra vé false
IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
=]bool NgayThangNam: : operator !=(NgayThangNam& return !(*this == ps);
Hình 65 - Mô tả phương thúc thức operator!=(NgayThangNam& ps)
- Phuong thic operator>=(Ngay ThangNamé& ps):
* Phuong thirc nay thuc hién kiém tra xem hai đối tượng có lớn hơn hoặc bằng ngày, tháng và năm không Nếu có, nó trả về true, ngược lai tra vé false bool_NgavThangNam: :operator>=(const NgayThangNam& ps) const { angNai operat ta pc bool NgayTt const Ngay Maen) return iNam < ps.iNam; i j i (iThang ! -iThang) { return 1Thang < ps.1Thang;
Hình 66 - Mô t¿ phương thức thức operator>=(NgayThangNam& ps)
- Phuong thic operator hoc
Hình 67 - Mô tả phương thức thức operator(NgayThangNamé& ps):
* Phuong thirc nay thuc hién kiém tra xem hai đối tượng có lớn hơn ngày, tháng và năm không Nếu có, nó trả vẻ true, ngược lại trả về false
39|Page bool NgayI[hangNam: :operator>(const Ngay [hangNam& ) const { if (iNam != ps.iNam) { return iNam < ps.iNam;
J | if (iThang != ps.iThang) { return 1Thang < -iThang; Ì J return iNgay < ps.iNgay;
Hình 68 - Mô tả phương thúc thức operator ps.iNgay;
Hình 69 - Mô t¿ phương thúc thức operator>(istream& is, NgayThangNamé& ps): ô _ Phương thức này sử dụng đề nhập thời gian từ người dựng Nú yờu cầu người dùng nhập ngày, tháng, năm qua luồng đầu vào (istream) Sau khi nhập, giá trị của đối tượng Ngay ThangNam được cập nhật dựa trên thông tin người dùng cung cap.”
1S >> 1Nẹgay >> ps.1Thang >> ps.1Nam; return -
Hình 70 - Mô t¿ phương ;húc istream& operator>>(istream& is, NgayThangNam& ps)
- _ Phương thức ostream& operator>>(ostream& is, Ngay ThangNam& ps): ằ _ Phương thức này sử dụng đề hiờn thị thời gian dưới dạng chuỗi ký tự Nú xuất ngày, tháng, năm của đối tượng Ngay ThangNam ra luéng dau ra (ostream)
IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG operator 0 && 1Nam > 9) 1Ngay