TUQNG DANH MỤC HÌNH ẢNH Hình 2 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 Hình 4 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...
Trang 1
DAI HOC QUOC GIA THANH PHO HO CHi MINH TRUONG DAI HOC CONG NGHE THONG TIN KHOA CONG NGHE PHAN MEM
MON LAP TRINH HUONG DOI TUONG
BAI TAP THUC HANH X
GVHD: Nguyén Ngoc Qui Sinh viên thực hiện: Nguyễn Công Đức - 23520307
90% Tp H6 Chi Minh, 02/2024 soce
Trang 2IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
NHAN XET CUA GIAO VIÊN HƯỚNG DẪN
., 9ày tháng năm 2024
Người nhận xét (Ký tên và ghi rõ họ tên)
Trang 3IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
MỤC LỤC
1.2 Bài tập 2: Xây dựng lớp phân só -2¿©++¿222E+++22E+++2E222222222zrtrrxeerrre §
1.4 Bài tập 4: Xây dựng lớp giờ phút Gidy oc ceeceeeeteteeteeeeseteeeeeeeeeeeeeaeeees l6
Trang 4IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
DANH MỤC BẢNG
Bang 3 Nội dung bên trong của hướng giải quyết phương thức NgayThangNamTiepTheo()
een 7
Báng 7 Nội dung bên trong của hướng giải quyết phương thức RutGon() - 1Ô Bang 8 Nội dung bên trong của hướng giải quyết phương thức RutGon(int iTu, int iMau)
Báng 9 Nội dung bên trong của hướng giải quyết phương thức Tong(PhanSo ps1, PhanSo
Bang 10 Noi dung bên trong của hướng giải quyết phương thức Hieu(PhanSo ps1, PhanSo
Bang 11 Nội dung bên trong của hướng giải quyết phương thức Tich(PhanSo ps1, PhanSo
Bang 12 Ndi dung bên trong của hướng giải quyết phương thirc Thuong(PhanSo ps1,
Bang 13 Ndi dung bên trong của hướng giải quyết phương thức SoSanh(PhanSo ps1,
Bang 15 Noi dung bên trong của hướng giải quyết phương thức Nhap() 13
Bang 17 Nội dung bên trong của hướng giải quyết phương thức Tong(SoPhuc sp1, SoPhuc
Bang 18 Ndi dung bên trong của hướng giải quyết phương thức Hieu(SoPhuc sp1, SoPhuc CxiáaiáaiiiiiiiiiiaaaẳảẳaảảÝỶÝỶẢỶẮẮ _L_ 14 Báng 19 Nội dung bên trong của hướng giải quyết phương thức Tich(SoPhuc sp1, SoPhuc
Bang 20 Nội dung bên trong của hướng giải quyết phương thức Thuong(SoPhuc sp1,
Bang 22 Ndi dung bên trong của hướng giải quyết phương thức Nhap() 16
Bang 24 Ndi dung bên trong của hướng giải quyết phương thức TinhCongThemMotGiay()
Trang 5IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
DANH MỤC HÌNH ẢNH
Hình 2 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
Hình 4 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 9
Hình 6 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 SoPhuc 13
Hình 8 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 GioPhutGiay
Trang 6IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
NỘI DUNG BÀI LÀM
1.1 Bài tập 1: Xây dựng lớp ngày tháng năm bao gồm
» Thuộc tinh: iNgay, iThang, iNam
Yêu câu: Thực hiện xây dựng lớp, vẽ class diagram và khai báo các thuộc tính, phương thức Viết nội dung vào các phương thức đã khai báo Gọi các phương thức trong hàm main() Class diagram của lớp Ngay ThangNam
NgayThangNam
- iNgay, ïThang, iNam: int
+ Nhap(): void + Xuat(): void +NgayThangNamTiepTheo(): void
Hình 1 Class diagram cửa lớp Ngay ThangNam
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 Ngay ThangNam
Hình 2 Thực hiện xây dựng lớp, khai báo các thuộc tinh, phương thức của lớp Ngay ThangNam
Phương thức của class NgayThangNam:
- Phuong thirc Nhap():
- Nội dung bén trong cua hudng giai quyét
Trang 7IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
Bảng 1 Nội dung bên trong czø #zớng giải quyếi phương thức Nhap() NgayThangNam::Nhap() {
cout << a
cin >> iNgay >> iThang >> iNam;
Phuong thirc Xuat();
- Nội dung bén trong cua hudng giai quyét
Bảng 2 Nội dung bên trong c2 zzớng giải quyế! phương (hức Xuat() NgayThangNam:
cout << lễ Cout << iNgay << << iThang << << iNam <<
Phương thức Ngay ThangNamTiepTheo():
- Input (đầu vào): Ngày tháng năm được nhập từ bàn phím/ người dùng
+ Output (dau ra): Ngày tháng năm được cộng thêm một ngày
- Hướng giải quyết: Ta tìm xem tháng và năm đó có bao nhiêu ngày (ngay) Nếu iNgay <= 0 hoặc >= ngay thì ngày tháng năm đó không hợp lệ và † dừng phương thức
Nếu hợp lệ thì ta cộng thêm 1 vào iNgay, néu iNgay > ngay thì ta set iNgay vẻ 1 và cộng thêm 1 vào iThang, néu ¡Thang > 12 thì ta set ïThang về 1 và cộng thêm 1 vào
iNam
- Nội dung bên trong của hướng giải quyét
Bảng 3 Nội dung bên trong cửø ướng giải quyếi phương (hức NgayThangNamTiepTheo() NgayThangNam: :NgayThangNamTiepTheo() {
ngay = 0;
a œ Đì \Q
Seneca
nee NOs
°
(iNam 3 400 == 0 || (iNam % 4 == 0 && iNam % 100 !=
Trang 8
IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
ngay = 29;
ngay = 28;
0 || 1Ngay >
cout <<
i ẢiNgay++;
(iNgay > ngay) iNgay 1, iThang++;
(iThang > 12) iThang 1, 1Nam++;
NgayThangNam: :Xuat();
- _ Kết quả chạy thử chương trình:
Bảng 4 Kết quả chạy thử chương rình bài tập 1
Nhap ngay thang nam: 20 2 2000
Ngay, Thang, Nam: 20/2/2000
Ngay, Thang, Nam:21/2/2000
1.2 Bài tập 2: Xây dựng lớp phân số
+ Thuộc tính: ïTu, iMau
+ Phương thirc: Nhap(), Xuat(), RutGon(), Tong(), Hieu(), Tich(), Thuong(), SoSanh() Yêu câu: Thực hiện xây dựng lớp, vẽ class diagram và khai báo các thuộc tính, phương thức Viết nội dung vào các phương thức đã khai báo Gọi các phương thức trong hàm main() Class diagram của lớp PhanSo
PhanSo
- iTu, iMau: int
+ Nhap(): void + Xuat(): void + RutGon(): void +RutGon(int iTu, int iMau): void +Tong(PhanSo ps1, PhanSo ps2): void +Hieu(PhanSo ps1, PhanSo ps2):void +Tich(PhanSo ps1, PhanSo ps2): void +Thuong(PhanSo ps1, PhanSo ps2): void
Hình 3 Class diagram cửa lớp PhanSo
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 Ngay ThangNam
Trang 9IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
using namespace std;
cLass PhanSo {
public:
aah 1nt 1Mau;
public:
void
void (PhanSo psi, PhanSo ps2);
void (PhanSo psi, PhanSo ps2);
OF ()
Hình 4 Thực hiện xây dựng lớp, khai báo các thuộc đính, phương thức của lớp PhanSo
Phương thức của class PhanSo:
- Phuong thirc Nhap():
- Nội dung bên trong của hướng giải quyết:
Bảng 5 Nội dung bên trong czø #zớng giải quyềi phương thức Nhap() PhanSo::Nhap() {
cout "Nhap tu va mau:
cin iTu >> iMau;
La a
(iMau == 0) { cout << "Phan so khong hop le \n";
PhanSo::Nhap();
- Phuong thirc Xuat();
- Nội dung bên trong của hướng giải quyết:
Bảng 6 Nội dung bên trong c2 zzớng giải quyế! phương thức Xuat() PhanSo::Xuat() {
cout << iTu << "/" << iMau << "\n";
- Phuong thirc RutGon():
+ Input (đầu vào): Phân só được nhập từ bàn phím/ người dùng
Trang 10IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
* Output (dau ra): Phan s6 da duoc rut gọn
* Huéng giai quyét: Ta chi viéc chia iTu va iMau cho GCD(iTu, iMau)
- Nội dung bên trong của hướng giải quyết:
Bảng 7 Nội dung bên trong cử zướng giải quyếi phương thức RutGon() PhanSo::RutGon() {
gcd = _ gcd(1Tu, iMau);
iTu = iTu / gc
iMau = iMau / gcd;
cout Phans
- Phuong thirc RutGon(int iTu, int iMau):
+ Input (đầu vào): Phân só được nhập từ bàn phím/ người dùng
* Output (dau ra): Phan s6 da duoc rut gọn
* Hướng giải quyết: Tương tự như phương thức RutGon(), phuong thức này chỉ dùng
đề rút gọn các phân số ở các phương thức khác
- Nội dung bên trong của hướng giải quyết:
Bảng 8 Nội dung bên trong cửø zướng giải quyếi phương (hức RutGon(int ïTu, int iMau) ::RutGon ( uo 1Mau) {
= gcd(iTu, iMau);
->iTu = iTu / gcd;
->iMau = iMau / ged;
PhanSo: :Xuat();
- Phuong thirc Tong(PhanSo ps1, PhanSo ps2):
- Input (đầu vào): 2 phân số được nhập từ bàn phím/ người dùng
« Output (đầu ra): Tổng của 2 phân sé
- Hướng giải quyết Ta áp dụng công thức a /b +c /d= (a * dđ+c * b)/(b * đ) sau đó
rút gọn phân só đáp án
- Nội dung bên trong của hướng giải quyết:
Bảng 9 Nói dung bên trong của uướng giải quyết phương hức Tong(PhanSo ps1, PhanSo ps2)
PhanSo::Tong(PhanSo psl, PhanSo ps2) { iTu = psl.iTu * ps2.iMau + ps2.iTu * psl.iMau;
iMau = psl.iMau * ps2.iMau;
10
Trang 11IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
cout <<
PhanSo::RutGon(iTu, iMau);
- Phuong thirc Hieu(PhanSo ps1, PhanSo ps2):
- Input (đầu vào): 2 phân số được nhập từ bàn phím/ người dùng
« Output (đầu ra): Hiệu của 2 phân só
« Hướng giải quyết: Ta áp dụng công thức a / b - c/d =(a* d-c*b)/(b * đ) sau đó
rút gọn phân só đáp án
- Nội dung bên trong của hướng giải quyết:
Bảng 10 Nói dung bên trong cửa zướng giải quyết phương thức Hieu(PhanSo ps1, PhanSo ps2) PhanSo: :Hieu (PhanSo psl, PhanSo ps2) {
iTu = psl.iTu * ps2.iMau - ps2.iTu * psl.iMau;
iMau = psl.iMau * ps2.iMau;
:RutGon(iTu, iMau);
- Phuong thirc Tich(PhanSo ps1, PhanSo ps2):
- Input (đầu vào): 2 phân số được nhập từ bàn phím/ người dùng
* Output (dau ra): Tich cua 2 phan so
* Huéng giai quyét: Ta Ap dung céng thitc a/b * c/d=(a* c)/(b * đ) sau đó rút gọn
phan só đáp án
- Nội dung bên trong của hướng giải quyết:
Bảng 11 Nói dung bên trong czø #ướng giải quyế: phương thức Tìch(PhanSo ps1, PhanSo ps2) PhanSo::Tich(PhanSo psl, PhanSo ps2) {
iTu = psl.iTu * ps2.iTu;
iMau = psl.iMau * ps2.iMau;
cout :RutGon(iTu, iMau);
- Phuong thirc Thuong(PhanSo ps1, PhanSo ps2):
- Input (đầu vào): 2 phân số được nhập từ bàn phím/ người dùng
+ Output (dau ra): Thuong cua 2 phan sé
+ Huéng giai quyét: Ta Ap dung công thức a / b + c/ đ= (a * đ) /(b * c) sau đó rút gọn
phân só đáp án
- Nội dung bên trong của hướng giải quyết:
11
Trang 12IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
Bang 12 Nội dung bên trong cửa /ớng giải quyế: phương thức Thuong(PhanSo ps1, PhanSo ps2) PhanSo: :Thuong (PhanSo psi, PhanSo ps2) {
iTu = psl.iTu * ps2.iMau;
iMau = psl.iMau * ps2.iTu;
cout Phan :RutGon(iTu, iMau);
- Phuong thirc SoSanh(PhanSo ps1, PhanSo ps2):
- Input (đầu vào): 2 phân số được nhập từ bàn phím/ người dùng
« Output (đầu ra): Kết quả so sánh của 2 phan sé
« Hướng giải quyết: t dùng tính chất khi so sánh 2 phân số a / b và c / d đó là so sánh a
*cvab*d
- Nội dung bên trong của hướng giải quyết:
Bang 13 Nội dung bên trong c2 zzóng giải quyết phương thức SoSanh(PhanSo ps1, PhanSo ps2)
ca"
32.iMau ca"
SN n ‹‹
Sanh(PhanSo psl, PhanSo ps2) { -iTu * ps2.iMau == psl.iMau * ps2.iTu) cout <<
a
(psl.iTu * ps2.iMau < psl.iMau * ps2.iTu) ps2.iMau << ps2.iTu <<
(psl.iTu * ps2.iMau > psi.iMau * ps2.iTu) ps2.iMau << ps2.iTu <<
- Kết quả chạy thử chương trình:
Bang 14 Kết quả chạy thứ chương trình bai tap 2
Va mau
Va mau
ru£
ru£
phan
phan phan
2 phan so la
hon 5/6
gon gon
so la
so la
so la
3/4 5/6 19/12 1/-12 5/8 9/10
1.3 Bài tập 3: Xây dựng số phức bao gồm
+ Thuộc tính: ïThuc, iAo
* Phương thức: NhapQ, Xuat(), Tong(Q), HieuQ, Tich(, ThuongQ)
cout cout
12
Trang 13IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
Yêu câu: Thực hiện xây dựng lớp, vẽ class diagram và khai báo các thuộc tính, phương thức Viết nội dung vào các phương thức đã khai báo Gọi các phương thức trong hàm main() Class diagram của lớp SoPhuc
SoPhuc
- iThuc, iAo: double + Nhap(): void + Xuat(): void +Tong(SoPhuc sp1, SoPhuc sp2): void +Hieu(SoPhuc sp1, SoPhuc sp2):void +Tich(SoPhuc sp1, SoPhuc sp2): void +Thuong(SoPhuc sp1, SoPhuc sp2): void
Hình 5 Class diagram cửa lớp SoPhuc
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 SoPhuc
, SoPhuc
„ SoPhuc
„ SoPhuc
(SoPhuc , SoPhuc
Hình 6 Thực hiện xây dựng lớp, khai báo các thuộc tinh, phuong thc cua |6p SoPhuc
Phương thức của class SoPhuc:
- Phuong thirc Nhap():
- Nội dung bên trong của hướng giải quyết:
Bang 15 Nội dung bên trong cửz ;zớng giải quyếi phương thức Nhap() SoPhuc::N
cout cin >> iThuc >> iAo;
- Phuong thi Xuat();
13
Trang 14IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
- Nội dung bên trong của hướng giải quyết:
Bang 16 Nội dung bên trong œ2 /zớng giải quyết phương thức XuatÔ
Phương thức Tong():
- Input (đầu vào): 2 số phức được nhập từ bàn phím/ người dùng
« Output (đầu ra): Tổng 2 só phức
- Hướng giải quyết: Cho hai só phức A(a1, a2), B(b1, b2), A + B = (a:+b:, az+ba)
Ta chỉ việc áp dụng công thức trên
- Nội dung bên trong của hướng giải quyết:
Bảng 17 Nói dung bên trong cửa zướng giải quyết phương thức Tong(SoPhuc sp1, SoPhuc sp2) SoPhuc::Tong(SoPhuc spl, SoPhục p2) {
iThuc = spl.iThuc + sp2.iThuc;
iAo = spl.iAo + sp2.iAo;
cout <
SoPhuc
Phuong thirc Hieu():
- Input (đầu vào): 2 số phức được nhập từ bàn phím/ người dùng
« Output (đầu ra): Hiệu 2 số phức
« Hướng giải quyết: Cho hai só phức A(a1, a2), B(b1, b2), A- B = (a¡-bi, aa-ba)
Ta chỉ việc áp dụng công thức trên
- Nội dung bên trong của hướng giải quyết:
Bang 18 Nói dung bên trong của zzớng giải quyếi phương (hức Hieu(SoPhuc sp1, SoPhuc sp2) SoPhuc::Hieu(SoPhuc spl, SoPhuc sp2) {
iThuc = spl.iThuc - sp2.iThuc;
iAo = spl.iAo — sp2.iAo;
cout <
Phương thức Tich():
- Input (đầu vào): 2 số phức được nhập từ bàn phím/ người dùng
« Output (đầu ra): Tích 2 số phức
14
Trang 15IT002 - LẬP TRÌNH HƯỚNG DO! TUQNG
«Hướng giải quyết: Cho hai số phức A(al, a2), B(bI1, b2), A * B = (ai*bi - az?ba,
a:”*ba+az”b4)
Ta chỉ việc áp dụng công thức trên
- Nội dung bên trong của hướng giải quyết:
Bang 19 Nói dung bên trong cửa zzóng giải quyếi phương (hức Tìch(SoPhuc sp1, SoPhuc sp2) SoPhuc::Tich(SoPhuc spl, SoPhuc sp2) {
iThuc = spl.iThuc * sp2.iThuc - spl.iAo * sp iAo = spl.iThuc * sp2.iAo + sp2.iThuc * spl.iAo;
loioibiss<
SoPhuc: :Xuat ();
- Phuong thc Thuong():
- Input (đầu vào): 2 số phức được nhập từ bàn phím/ người dùng
« Output (đầu ra): Thương 2 số phức
« Hướng giải quyết Cho hai số phức A(al, a2), B(b1, b2) A / B =
a"b+a, b b a,—a, *b,
2 2 2
be +b b, + b
Ta chỉ việc áp dụng công thức trên
- Nội dung bên trong của hướng giải quyết:
Bảng 20 Nội dung bên trong c2 zớng giải quyếi phương thức Thuong(SoPhuc sp1, SoPhuc sp2)
huong(SoPhuc spl, SoPhuc sp2) { (spl.iThuc * sp2.iThuc + spl.iAo * sp2.iAo) / (sp2.iThuc * sp2.iThuc + sp2.iAo * sp2.iAo);
iAo = (spl.iAo * sp2.iThuc - spl.iThuc * sp2.iAo) / (sp2.iThuc
* sp2.iThuc + sp2 A22 ie cout
SoPhuc:
- Két qua chay tht chuong trinh:
Bảng 21 Kết quả chạy thứ chương trinh bai tap 3
Nhap 3 Nhap ag 4 Tong so phuc la: 7 + 9i Hieu so phuc la: -1 + -li Tich la: -8 + 31i
so phuc la: 0.780488 + 0.0243902i
15