Danh sách bài tp lp trình ng đối ng vi C++ - Mr NHP
Chương 1. M đầu
Chương 2. Lp đi ng
1. Xây dng lp Phanso gm:
Thuc Tính: tuso, mauso.
Phương thc:
o Hàm Khi To Không Tham S, Hàm Hy
o Nhp , Xut
o Cong(), Tru(), Nhan(), Chia()
Tính Tng, Hiu, Tích, Thương 2 phân s obj1 obj2 ri in kết qu ra
màn hình
2. Xây dng lp Vemaybay gm:
Thuc tính: tenchuyen, ngaybay, giave
Phương thc: Cu t; Hy t; Nhap; Xuat; getgiave() : hàm tr v giá
3. Thiết lp lớp PhanSo để biu din khái nim phân s vi hai thành phn
d liu t s, mu s các hàm thành phn cng, tr, nhân, chia hai phân s,
các hàm thành phn xut, nhập, định giá tr cho phân s. Viết chương trình cho
phép nhp vào hai phân s, in ra kết qu các phép toán cng, tr, nhân, chia
hai phân s k trên.
4. Xây dng lp biu din khái nim s phc vi hai thành phn d liu
thc, o các hàm thành phn xut, nhp, định giá tr cho s phc, cng, tr,
nhân, chia hai s phc. Viết chương trình cho phép nhp vào hai s phc, in ra
kết qu các phép toán cng, tr, nhân, chia hai s phc k trên.
5. Xây dng lp Candidate (Thí sinh) gm các thuc tính: mã, n, ngày
tháng năm sinh, đim thi Toán, Văn, Anh các phương thc cn thiết.
Xây dng lớp TestCandidate để kim tra lp trên:
Nhp vào n thí sinh (n do người dùng nhp)
In ra thông tin v các thí sinh tng đim lớn hơn 1
6. Thiết lp lp biu din khái niệm điểm trong mt phng vi hai thành
phn d liệu hoành độ tung độ. Viết các phương thức thiết lp, các hàm
thành phần cho phép thay đi ni dung của điểm, lấy hoành độ, tung độ, tnh
tiến, nhp, xut mt đim, hàm v đim trong chế độ đồ ha (tùy chn).
7. Viết định nghĩa lớp TamGiac để biu din khái nim tam giác trong mt
phng với các phương thức thiết lp, hu b (nếu có). c m thành phn
nhp, xut, tnh tiến, quay, phóng to, thu nh v tam giác (tùy chn).
Tnh tiến theo vector v (a,b) : x’= x +a; y’=y+b;
Phép quay tâm O, góc quay α
x’ = xcosα – y sinα;
y’= xsinα + ycosα
8. Viết định nghĩa lớp DaGiac đ biu din khái niệm đa giác trong mt
phng vi các hàm thành phần tương tự như lớp TamGiac.
9. Định nghĩa lớp d liệu CTimeSpan để biu din khái nim khong thi
gian, các hàm thành phn và các phép toán cn thiết (+, -, ==, !=, >, >=, <,
<=), hàm xut, nhập. Lưu ý viết theo dng hàm: cong, tru, …; không dùng
overloading operator
10. Định nghĩa lớp CTime biu din khái nim thời điểm các thành phn
gi phút giây. Định nghĩa các phép toán +, (cng, tr thêm mt s nguyên
giây), (phép tr hai CTime để đưc mt CTimSpan), ++, (thêm bt mt
giây) , hàm xut, nhập. Lưu ý viết theo dạng hàm: cong, tru, …; không dùng
overloading operator
11. Định nghĩa lớp CDate biu din khái niệm ngày, tháng, năm với các
phép toán +, (cng, tr thêm mt s ngày), ++, (thêm bt mt ngày),
(khong cách gia hai CDate tính bng ngày), hàm xut, nhập. Lưu ý viết theo
dạng hàm: cong, tru, …; không dùng overloading operator
12. Định nghĩa lớp biu din khái niệm đa thức bc bt k vi các hàm
thành phn và phép toán cn thiết.
13. Viết định nghĩa lớp String đ biu din khái nim chui t vi các
phương thức thiết lp hu b, các hàm thành phn tính chiu dài chui, ni
hai chuỗi, đảo chui, nhp và xut chui.
14. Áp dng các lớp string vector trong thư viện STL đ xây dng
chương trình thống kê đoạn văn như sau:
Đọc mt đon văn từ file văn bn.
Đếm s ng câu trong đon văn (câu kết thúc thúc bi du ., !, ?).
Đếm s ng t trong mi câu (t tách bit so vi các t khác bi
khong trng).
Tìm t xut hin nhiu nht trong đon văn (có th nhiu t).
Sp xếp tăng dn các t (theo th t t đin) trong mi u.
Kết xut kết qu ra file văn bn theo cu trúc sau:
Dòng đầu tiên cha C s ng câu.
C dòng tiếp theo cha Ti s ng t trong câu th i (1 <= i <= C).
ng kế tiếp cha c t xut hin nhiu nht.
Các dòng kế tiếp cha đon văn sau khi đã sp xếp.
15. Làm li bài s phc vi một phương thc thiết lp duy nht cho phép
quan điểm mt s thực như một s phức đặc bit (phn o bằng 0). Định nghĩa
các phép toán +, -, *, /, = =, !=, >, >=, <, <= trên s phức. Định nghĩa phép
toán << và >> để xut và nhp d liu vào s phc.
16. Làm li bài phân s với các phương thức thiết lp cho phép s dng
mt s nguyên như mt phân s đặc bit (mu s bng 1). Định nghĩa các phép
toán +, -, *, /, = =, != , >, >=, <, <= trên phân số. Định nghĩa phép toán <<
và >> để xut và nhp d liu vào phân s.
17. Định nghĩa lớp d liu CTimeSpan đ biu din khái nim khong thi
gian, các hàm thành phn và các phép toán cn thiết (+, -, ==, !=, >, >=, <,
<=).
18. Định nghĩa lớp CTime biu din khái nim thời điểm các thành phn
gi phút giây. Định nghĩa các phép toán +, (cng, tr thêm mt s nguyên
giây), (phép tr hai CTime để đưc mt CTimSpan), ++, (thêm bt mt
giây). Phép toán <<, >> để xut, nhp d liu loi CTime.
19. Định nghĩa lớp CDate biu din khái nim ngày, tháng, năm với các
phép toán +, (cng, tr thêm mt s ngày), ++, (thêm bt mt ngày),
(khong cách gia hai CDate tính bằng ngày). Phép toán <<, >> đ xut, nhp
d liu loi CDate.
20. Hãy định nghĩa lớp CString biu din khái nim chui ký t vi c
phương thức thiết lp, hu b, các hàm thành phn các phép toán cn thiết
(+, gán, so sánh hai chui).
22. Định nghĩa lớp biu din khái niệm đa thức bc bt k vi các hàm
thành phn và phép toán cn thiết.
23. Định nghĩa lớp CVector biu din khái nim vector trong không gian
s chiu bt k vi các hàm thành phn các phép toán cn thiết. Định nghĩa
lp CMatrix biu din khái nim ma trận có kích thước bt k vi các hàm thành
phn các phép toán cn thiết. Viết hàm tính tích ca mt ma trn mt
vector. Tích ca hai ma trn.
24. Hãy định nghĩa lớp INTEGER th hoạt động như để mi INTEGER
ging hệt như một ‘int’ của ngôn ng C/C++.
25. Hãy định nghĩa lớp MYINT hoạt động như kiểu d liệu ‘int’ nhưng
phép cng hai MYINT hoạt động như phép trừ hai int và ngược li.
26. Định nghĩa lớp CExpr đ biu din mt biu thc toán hc dng trung
t vi các phép toán thông dng +, -, *, / và cho phép có du ngoc. Phn giao
din có th như sau:
27. Cho đon chương trình sau:
class CExpr {
char
*expr;
public:
CExpr();
CExpr(char
*s);
~CExpr();
double eval();
//...
};
main(){
CExpr("2 + 3 * 5 - (3 + (7 + 2) * 3) / 2");
cout << "Gia tri cua bieu thuc: " << expr->eval();
}
#include <iostream.h>
main(){
cout << "Hello, world.\n";
Hãy sa li chương trình trên, nhưng không sa cha hàm main, để
chương trình có thể to ra kết xut:
28. Xây dng lp vn động viên VanDongVien gm:
+ Thuc tính: hoten (chui t), tuoi (s nguyên), monthidau (chui
t), cannang (s thc), chieucao (s thực). Phương thức: Thiết lp không tham
s; Thiết lp 5 tham s; Hy b; Np chng toán t nhp >>; Np chng toán
t xut <<; Np chng toán t so sánh > (mt vận động viên lớn hơn nếu
chiu cao lớn hơn, trong trưng hp chiu cao bng nhau thì xét cân nng ln
hơn)
29. Xây dng lp biu din khái nim hình ellipse và hình tròn. Viết chương
trình cho phép nhp vào mt hình tròn. V hình tròn đó.
30. Xây dng các loại đối ng hình thang, hình bình hành, hình ch nht,
hình vuông. Ch xét các hình thang, hình bình hành đáy song song vi trc
hoành, ch xét hình ch nht hình vuông cnh song song vi trc to độ.
Viết chương trình cho phép nhập vào mt trong các hình k trên. V hình đó.
Chương 3. Tha kế
Bài 1: Viết một chương trình đnh nghĩa mt lớp hình constructor đưa ra giá tr ca
chiu rng chiều i. Sau đó, định nghĩa hai lớp con hình tam giác hình ch nht. Hai lp
con này tính din tích ca hình. Trong lớp chính, định nghĩa hai biến hình tam giác hình ch
nht. Sau đó gim area() trong hai biến này.
}
Entering the Hello program saying...
Hello, world.
Then exiting...
Bài 2: Viết một chương trình mẹ vi mt lp con kế tha. C hai đều phi method void
display () đ print mt message (message ca m và con khác nhau). Trong phn chính, đnh
nghĩa lớp con và gi method display() da trên lp con.
Bài 3: Viết mt chương trình vi lp m animal. Trong chương trình này, đnh nghĩa các
biến tên, tuổi hàm set_value(). Sau đó to hai biến cơ bản Zebra Dolphin đ viết message
thông báo tên tui và nhng thông tin kc (như nguồn gc).
Bài 4:
a.
To mt lp Vehicle vi các thuc tính max_speed bn sao tng s.
b.
To mt lp Vehicle không biến phương thc nào c.
c.
To mt lp con Bus kế tha mi biến phương thc ca lp cha Vehicle.
d.
Hãy đưa ra đối s sc cha ca Bus.seating_capacity() mt giá tr mc đnh
50.
e.
Xác định mi đối ng ca Bus thuc lp nào.
f.
Xác định nếu School_bus ng mt bn sao ca lp Vehicle
Xây dng lp Nguoi gm:
Thuc tính: hoten, gioitinh, tuoi
Phương thc:
o Cu t
o Hy
o Nhp
o Xut
Xây dng lp Hanhkhach (mi hành khách đưc mua nhiu vé) kế tha
lp Nguoi b sung thêm:
Thuc tính: Vemaybay *ve; int soluong;
Phương thc:
o Cu t
o Hy
o Nhp
o Xut
o tongtien(): tr v Tng s tin phi tr ca hành khách
Chương trình chính: Nhp vào 1 danh ch n hành khách (n nhp t bàn
phím).
Hin th danh sách hành khách s tin phi tr tương ng ca mi khách
hàng.
Sp xếp danh sách hành khách theo chiu gim dn ca Tng tin.
1. Gi s Công ty có hai loi nhân viên: Nhân viên văn phòng và Nhân viên
sn xut. Viết chương trình quản nh lương cho từng nhân viên ca ng
ty:
Mi nhân viên cn qun các thông tin sau: H tên, ngày sinh, lương
Công ty cn tính lương cho nhân viên như sau:
Đối vi nhân viên sn xut:
Lương=lương
căn
bn
+
s
sn
phm
*
5.000
Đối nhân vn văn phòng:
lương = số ngày làm vic * 100.000
2. Xây dng các loại đối tượng sinh viên, hc sinh, công nhân, ngh sĩ, ca
sĩ. Viết chương trình cho phép nhp vào mt trong các loại đối tượng k trên. In
thông tin đối tượng đó.
3. To một danh sách các đối tượng, mỗi đối ng thuc mt trong các
loi: sinh viên, hc sinh, ng nhân, ngh sĩ, ca sĩ. Viết chương trình cho phép
nhp danh sách k trên, in thông tin ca từng đối tượng trong danh sách.
6. Mt nông trại chăn nuôi 3 loại gia súc: bò, cu, dê. Mi loi gia
súc đều th sinh con, cho sa phát ra tiếng kêu riêng của chúng. Khi đói,
các gia súc s phát ra tiếng kêu để đòi ăn. Sau mt thi gian chăn nuôi, người
ch nông tri mun thng xem trong nông tri bao nhiêu gia súc mi
loi, tng s lit sa mà tt c các gia súc của ông đã cho.
Áp dng kế tha, xây dng chương trình cho phép người ch nông tri
nhp vào s ợng gia súc ban đầu mi loi.
a. Một hôm người ch nông trại đi vắng, tt c gia súc trong nông trại đều
đói. Hãy cho biết nhng tiếng kêu nghe được trong nông tri.
b. Chương trình s đưa ra thng các thông tin người ch mong mun
(nêu trên) sau mt la sinh và một lược cho sa ca tt c gia súc. Biết rng:
Tt c gia súc mi loi đều sinh con.
S ng sinh ca mi gia súc ngu nhiên.
Tt c gia súc mi loi đều cho sa.
S
lit
sa mi
gia
cho
ngu
nhn
nhưng
trong
gii
hn
sau:
:
0
20
lít.
Cu:
0
5
lít.
Dê: 0 10t.
Xây dng các loại đối tượng sách giáo khoa, tiu thuyết, tp chí. Viết
chương trình cho phép quản lý mt danh sách các loi đối tượng k trên.
Mi loại trên đều thông tin chung như sau: Tên, Nhà xut bản, Năm
xut bn, S trang, Giá bán.
Đối vi SGK thêm thông tin v khi lớp; đối vi tiu thuyết thêm thông tin
v th loi (gi ng, hình s, kinh dị,…); đối vi tp chí thêm thông tin v
v dng tạp chí theo định k xut bn (tun san, nguyệt san, quý san,…)
2. y dng lp DaGiac th hin khái niệm đa giác với các thao tác cn
thiết (nhp, xut, tnh tiến). Dùng kế tha xây dng các lp t giác, tam giác.
Viết chương trình cho phép nhập vào mt tam giác hoc t giác. Xut thc
hin các thao tác tnh tiến hình đã nhập.
3. Thêm vào bài 2 các hình hình bình hành, hình ch nht nh vuông.
Định nghĩa lại các thao tác lp con nếu cn. Xut thc hin thao tác tnh
tiến hình đã nhập.
4. Viết chương trình cho phép nhập vào mt trong các hình (tam giác, t
giác, hình bình hành, hình ch nht, nh vuông) k trên, xut thc hin
phép tnh tiến cho các hình đã nhập.
5. Viết chương trình tính din tích chu vi các hình: nh ch nht biết
hai cnh, hình tam giác biết ba cnh, hình tròn biết bán kính. Chương trình
giao din như sau: 1. Nhập kích thước các hình; 2. Hin th din tích chu vi
các hình đã nhập; 3. Kết thúc chương trình.Lựa chn công vic (1, 2, 3):Khi
người s dng chn 1 thì hỏi ngưi s dng nhp kích thước cho hình nào, nhp
xong hỏi người s dng nhp tiếp không. u cầu trong chương trình cài
đặt s đa hình liên kết đng.
. Công ty XYZ qun vic mua hàng ca 3 loi khách hàng:
Loi A: Khách hàng bình thường (gm x khách hàng):
S tin khách hàng tr = S ợng hàng * đơn giá hàng + Thuế VAT (10%)
Loi B: Khách hàng thân thiết (gm y khách hàng):
Phn trăm khuyến mãi = MAX (S năm thân thiết * 5%, 50%)
S tin khách hàng tr = (S ng hàng * đơn giá hàng) * (100% Phn trăm
khuyến mãi) + Thuế VAT (10%)
Loi
C:
Khách
hàng
đặc
bit
(gm
z
khách
hàng):
S tin khách hàng tr = (S ợng hàng * đơn giá hàng) *50% + Thuế VAT
(10%)
Viết chương trình thc hin các yêu cu sau:
Nhp danh sách khách hàng t file văn bn XYZ.INP. 0< x,y,z<1000.
S dng con tr hàm để tính Tng s tin mi khách hàng trong danh
sách phi tr. Xut kết qu ra file XYZ.OUT dưới định dạng theo quy định.
Thiết kế xây dng các lp đ gii quyết bài toán tính Tng s tin công
ty thu được. Xut kết qu ra file XYZ.OUT dưới định dạng theo quy định.
XYZ.INP
XYZ.OUT
x y z
TenKhachHangA1
SoTienPhaiTraA1
………………
TenKhachHangAx
SoTienPhaiTraAx
TenKhachHangB1
SoTienPhaiTraB1
………………
TenKhachHangBy
SoTienPhaiTraBy
TenKhachHangC1
SoTienPhaiTraC1
………………
TenKhachHangCz
SoTienPhaiTraCz
TongSoTienCongTyThuDuoc
4. Khách sạn SOFITEL 3 loại phòng với doanh thu phòng của tháng được tính
như sau:
Loi Deluxe: doanh thu phòng = (S đêm * 750000 + Phí dch v) * (100% + P phc
v)
Loi Premium: doanh thu phòng = (S đêm * 500000 + Phí dch v) * 105%
Loi Business: doanh thu phòng = S đêm * 300000
Viết chương trình thc hin các yêu cu sau:
Nhp danh sách các phòng được s dng t tập tin văn bn SOFITEL.INP. d: s phòng
loi Deluxe, p: s phòng loi Premium, b: s phng loi Business (0<d,p,b<1000)
S dng con tr hàm để tính doanh thu tng loi phòng khách sn thu được. Xut kết qu
ra file SOFITEL.OUT dưới đnh dạng theo quy đnh.
Thiết kế y dng các lp để lit phòng doanh thu vượt tri. Biết phòng
doanh thu vượt tri tha tính cht:
o Doanh thu tháng >= Doanh thu tng trước * 125%
o Xut kết qu ra file SOFITEL.OUT dưới đnh dng theo quy định.
SOFITEL.INP
SOFITEL.OUT
d p b
MaPhongD1
SoDemD1
PhiDichVuD1
PhiPhucVuD1
MaPhongDd
SoDemDd
PhiDichVuDd
PhiPhucVuDd
MaPhongP1
SoDemP1
PhiDichVuP1
MaPhongPp
SoDemPp
PhiDichVuPp
MaPhongB1
SoDemB1
5. Cho N hình, gm các loi hình: tam giác, ch nht, hình vuông,
hình tròn (đọc t file).
Các hình đưc t vi các thông s như sau:
o Hình tam giác: hiu l ‘G’ kèm theo ta độ 3 đỉnh.
o Hình ch nht: hiu l ‘C’ kèm theo ta đ góc trái trên chiu dài
(theo trc Ox) và chiu rng (theo trc Oy).
o Hình vuông: hiu l ‘V’ kèm theo ta độ góc trái trên chiu i
cnh.
o Hình tròn: hiu l ‘T’ kèm theo ta độ tâm bán kính.
Mi ta độ đưc xác định bi hai s nguyên.
Tìm hình ch nht nh nht bao quanh N hình đưc cho xác định bi ta độ
góc trái trên chiu dài, chiu rng ca hình ch nhật đó. Xuất kết qu ra tp
tin văn bn như d sau:
Yêu cu: thiết kế các lớp đối tượng để gii quyết sao cho chương trình khả
năng tiến hóa, d dàng thêm các loi hình mi.
MaPhongBb
SoDemBb
Cho sn 3 hàm s:
f(x) = k1*x 3
g(x) = -3x 2 + k2*x
h(x) = 7x 3 + k3*x 2 5
và 3 tham s min, max, step.
Viết chương trình thc hin các yêu cu sau:
Đọc 6 tham s trên t tp tin KHAOSAT.INP. Tp tin ch gm mt dòng
duy nht cha 6 s thc k1, k2, k3, min, max, step (mi s cách bi mt
khong trng)
S dng con tr hàm để in bng giá tr ca 3 m trên trong khong
[min, max] với bước nhy l step ra tập tin KHAOSAT.OUT. Dòng đầu tiên cha
các s ng vi gi tr ca x kho st: x1, x2, x3, (mi s cách nhau bởi đúng
mt khong trng) với x1 = min, x2 = min+step, Dòng th hai cha cc gi tr
f(x1), f(x2), f(x3), Tương tự, dòng th ba cho hàm g và dòng th tư cho hàm
h.
Thiết kế xây dng các lớp để in ra bng giá tr đạo hàm ra tp tin
KHAOSAT.OUT. Dòng tiếp theo đu tiên cha các s f’(x1), f’(x2), f’(x3),
Tương tự cho hai dòng kế tiếp ng với g’ và h’.
KHAOSAT.INP
KHAOSAT.OUT
-2
0
2
-5
-3
-1
-16
0
-8
1
2
3
-2
2
2
-49
-5
63
1
1
1
14
2
-10
72 0
96
7. Viết chương trình tính din tích và chu vi các hình: Hình ch nht
biết hai cnh, hình tam giác biết ba cnh, hình tròn biết bán nh.
Chương trình có giao diện như sau:
1. Nhp kích thước các hình
2. Hin th din tích chu vi các hình đã nhp
3. Kết thúc chương trình
La chn ng vic (1, 2, 3):
Khi người s dng chn 1 thì hỏi người s dng nhập kích thước cho hình nào,
nhp xong hi người s dng nhp tiếp không. Yêu cu trong chương trình
cài đặt s đa hình liên kết động.
Chương 4. Khuôn hình
1. Áp dng function template để gii các bài tp sau:
Tìm min, max gia 2 phn t kiu T (int, float, PhanSo, ).
Tìm phn t dương ln nht trong mng kiu T (int, float, PhanSo, ).
Sp xếp tăng dn mng kiu T (int, float, PhanSo, …).
2. 4 yêu cu sp xếp trên mt dãy s nguyên như sau:
Sp xếp dãy s nguyên theo th t tăng dn.
Sp xếp dãy s nguyên theo th t gim dn ca gi tr tuyt đi.
Sp xếp các s nguyên chn tăng dn các s nguyên l gim dn.
Sp xếp các s nguyên âm gim dn, các s nguyên dương tăng dần, và
các s dương âm xếp trước các s nguyên dương.
u cu:
a. Bn hãy thiết kế và cài đặt 4 thut toán sp xếp trên theo phương pháp lập
trình ng đối ng để tn dng ti đa ngun.
b. Nếu phi thay đổi kiu d liu, bn hãy tng quát hóa các thut toán sp xếp
trên để có th sp xếp các dãy s có kiu d liu bt kì. (s dng template
3

Preview text:

Danh sách bài tập lập trình hướng đối tượng với C++ - Mr NHP Chương 1. Mở đầu
Chương 2. Lớp và đối tượng
1. Xây dựng lớp Phanso gồm:
• Thuộc Tính: tuso, mauso. • Phương thức:
o Hàm Khởi Tạo Không Tham Số, Hàm Hủy o Nhập , Xuất
o Cong(), Tru(), Nhan(), Chia()
Tính Tổng, Hiệu, Tích, Thương 2 phân số obj1 và obj2 rồi in kết quả ra màn hình
2. Xây dựng lớp Vemaybay gồm:
Thuộc tính: tenchuyen, ngaybay, giave
Phương thức: Cấu tử; Hủy tử; Nhap; Xuat; getgiave() : hàm trả về giá vé
3. Thiết lập lớp PhanSo để biểu diễn khái niệm phân số với hai thành phần
dữ liệu tử số, mẫu số và các hàm thành phần cộng, trừ, nhân, chia hai phân số,
các hàm thành phần xuất, nhập, định giá trị cho phân số. Viết chương trình cho
phép nhập vào hai phân số, in ra kết quả các phép toán cộng, trừ, nhân, chia hai phân số kể trên.
4. Xây dựng lớp biểu diễn khái niệm số phức với hai thành phần dữ liệu
thực, ảo và các hàm thành phần xuất, nhập, định giá trị cho số phức, cộng, trừ,
nhân, chia hai số phức. Viết chương trình cho phép nhập vào hai số phức, in ra
kết quả các phép toán cộng, trừ, nhân, chia hai số phức kể trên.
5. Xây dựng lớp Candidate (Thí sinh) gồm các thuộc tính: mã, tên, ngày
tháng năm sinh, điểm thi Toán, Văn, Anh và các phương thức cần thiết.
Xây dựng lớp TestCandidate để kiểm tra lớp trên:
– Nhập vào n thí sinh (n do người dùng nhập)
– In ra thông tin về các thí sinh có tổng điểm lớn hơn 1
6. Thiết lập lớp biểu diễn khái niệm điểm trong mặt phẳng với hai thành
phần dữ liệu hoành độ và tung độ. Viết các phương thức thiết lập, các hàm
thành phần cho phép thay đổi nội dung của điểm, lấy hoành độ, tung độ, tịnh
tiến, nhập, xuất một điểm, hàm vẽ điểm trong chế độ đồ họa (tùy chọn).
7. Viết định nghĩa lớp TamGiac để biểu diễn khái niệm tam giác trong mặt
phẳng với các phương thức thiết lập, huỷ bỏ (nếu có). Các hàm thành phần
nhập, xuất, tịnh tiến, quay, phóng to, thu nhỏ và vẽ tam giác (tùy chọn).
Tịnh tiến theo vector v (a,b) : x’= x +a; y’=y+b;
Phép quay tâm O, góc quay α x’ = xcosα – y sinα; y’= xsinα + ycosα
8. Viết định nghĩa lớp DaGiac để biểu diễn khái niệm đa giác trong mặt
phẳng với các hàm thành phần tương tự như lớp TamGiac.
9. Định nghĩa lớp dữ liệu CTimeSpan để biểu diễn khái niệm khoảng thời
gian, các hàm thành phần và các phép toán cần thiết (+, -, ==, !=, >, >=, <,
<=), hàm xuất, nhập. Lưu ý viết theo dạng hàm: cong, tru, …; không dùng overloading operator
10. Định nghĩa lớp CTime biểu diễn khái niệm thời điểm có các thành phần
giờ phút giây. Định nghĩa các phép toán +, – (cộng, trừ thêm một số nguyên
giây), – (phép trừ hai CTime để được một CTimSpan), ++, — (thêm bớt một
giây) , hàm xuất, nhập. Lưu ý viết theo dạng hàm: cong, tru, …; không dùng overloading operator
11. Định nghĩa lớp CDate biểu diễn khái niệm ngày, tháng, năm với các
phép toán +, – (cộng, trừ thêm một số ngày), ++, — (thêm bớt một ngày), –
(khoảng cách giữa hai CDate tính bằng ngày), hàm xuất, nhập. Lưu ý viết theo
dạng hàm: cong, tru, …; không dùng overloading operator
12. Định nghĩa lớp biểu diễn khái niệm đa thức có bậc bất kỳ với các hàm
thành phần và phép toán cần thiết.
13. Viết định nghĩa lớp String để biểu diễn khái niệm chuỗi ký tự với các
phương thức thiết lập và huỷ bỏ, các hàm thành phần tính chiều dài chuỗi, nối
hai chuỗi, đảo chuỗi, nhập và xuất chuỗi.
14. Áp dụng các lớp string và vector trong thư viện STL để xây dựng
chương trình thống kê đoạn văn như sau:
• Đọc một đoạn văn từ file văn bản.
• Đếm số lượng câu trong đoạn văn (câu kết thúc thúc bởi dấu ., !, ?).
• Đếm số lượng từ trong mỗi câu (từ tách biệt so với các từ khác bởi khoảng trắng).
• Tìm từ xuất hiện nhiều nhất trong đoạn văn (có thể có nhiều từ).
• Sắp xếp tăng dần các từ (theo thứ tự từ điển) trong mỗi câu.
• Kết xuất kết quả ra file văn bản theo cấu trúc sau:
• Dòng đầu tiên chứa C là số lượng câu.
• C dòng tiếp theo chứa Ti là số lượng từ trong câu thứ i (1 <= i <= C). • Dòng kế tiếp chứa các từ xuất hiện nhiều nhất.
• Các dòng kế tiếp chứa đoạn văn sau khi đã sắp xếp.
15. Làm lại bài số phức với một phương thức thiết lập duy nhất cho phép
quan điểm một số thực như một số phức đặc biệt (phần ảo bằng 0). Định nghĩa
các phép toán +, -, *, /, = =, !=, >, >=, <, <= trên số phức. Định nghĩa phép
toán << và >> để xuất và nhập dữ liệu vào số phức.
16. Làm lại bài phân số với các phương thức thiết lập cho phép sử dụng
một số nguyên như một phân số đặc biệt (mẫu số bằng 1). Định nghĩa các phép
toán +, -, *, /, = =, != , >, >=, <, <= trên phân số. Định nghĩa phép toán <<
và >> để xuất và nhập dữ liệu vào phân số.
17. Định nghĩa lớp dữ liệu CTimeSpan để biểu diễn khái niệm khoảng thời
gian, các hàm thành phần và các phép toán cần thiết (+, -, ==, !=, >, >=, <, <=).
18. Định nghĩa lớp CTime biểu diễn khái niệm thời điểm có các thành phần
giờ phút giây. Định nghĩa các phép toán +, – (cộng, trừ thêm một số nguyên
giây), – (phép trừ hai CTime để được một CTimSpan), ++, — (thêm bớt một
giây). Phép toán <<, >> để xuất, nhập dữ liệu loại CTime.
19. Định nghĩa lớp CDate biểu diễn khái niệm ngày, tháng, năm với các
phép toán +, – (cộng, trừ thêm một số ngày), ++, — (thêm bớt một ngày), –
(khoảng cách giữa hai CDate tính bằng ngày). Phép toán <<, >> để xuất, nhập dữ liệu loại CDate.
20. Hãy định nghĩa lớp CString biểu diễn khái niệm chuỗi ký tự với các
phương thức thiết lập, huỷ bỏ, các hàm thành phần và các phép toán cần thiết
(+, gán, so sánh hai chuỗi).
22. Định nghĩa lớp biểu diễn khái niệm đa thức có bậc bất kỳ với các hàm
thành phần và phép toán cần thiết.
23. Định nghĩa lớp CVector biểu diễn khái niệm vector trong không gian có
số chiều bất kỳ với các hàm thành phần và các phép toán cần thiết. Định nghĩa
lớp CMatrix biểu diễn khái niệm ma trận có kích thước bất kỳ với các hàm thành
phần và các phép toán cần thiết. Viết hàm tính tích của một ma trận và một
vector. Tích của hai ma trận.
24. Hãy định nghĩa lớp INTEGER có thể hoạt động như để mỗi INTEGER
giống hệt như một ‘int’ của ngôn ngữ C/C++.
25. Hãy định nghĩa lớp MYINT có hoạt động như kiểu dữ liệu ‘int’ nhưng
phép cộng hai MYINT hoạt động như phép trừ hai int và ngược lại.
26. Định nghĩa lớp CExpr để biểu diễn một biểu thức toán học ở dạng trung
tố với các phép toán thông dụng +, -, *, / và cho phép có dấu ngoặc. Phần giao diện có thể như sau: class CExpr { char *expr; public: CExpr(); CExpr(char *s); ~CExpr(); double eval(); //... }; main(){
CExpr("2 + 3 * 5 - (3 + (7 + 2) * 3) / 2");
cout << "Gia tri cua bieu thuc: " << expr->eval(); }
27. Cho đoạn chương trình sau: #include main(){
cout << "Hello, world.\n"; }
Hãy sửa lại chương trình trên, nhưng không sửa chữa gì hàm main, để
chương trình có thể tạo ra kết xuất:
Entering the Hello program saying... Hello, world. Then exiting...
28. Xây dựng lớp vận động viên VanDongVien gồm:
+ Thuộc tính: hoten (chuỗi ký tự), tuoi (số nguyên), monthidau (chuỗi ký
tự), cannang (số thực), chieucao (số thực). Phương thức: Thiết lập không tham
số; Thiết lập 5 tham số; Hủy bỏ; Nạp chồng toán tử nhập >>; Nạp chồng toán
tử xuất <<; Nạp chồng toán tử so sánh > (một vận động viên là lớn hơn nếu
chiều cao lớn hơn, trong trường hợp chiều cao bằng nhau thì xét cân nặng lớn hơn)
29. Xây dựng lớp biểu diễn khái niệm hình ellipse và hình tròn. Viết chương
trình cho phép nhập vào một hình tròn. Vẽ hình tròn đó.
30. Xây dựng các loại đối tượng hình thang, hình bình hành, hình chữ nhật,
hình vuông. Chỉ xét các hình thang, hình bình hành có đáy song song với trục
hoành, chỉ xét hình chữ nhật và hình vuông có cạnh song song với trục toạ độ.
Viết chương trình cho phép nhập vào một trong các hình kể trên. Vẽ hình đó. Chương 3. Thừa kế
Bài 1: Viết một chương trình định nghĩa một lớp hình có constructor đưa ra giá trị của
chiều rộng và chiều dài. Sau đó, định nghĩa hai lớp con hình tam giác và hình chữ nhật. Hai lớp
con này tính diện tích của hình. Trong lớp chính, định nghĩa hai biến hình tam giác và hình chữ
nhật. Sau đó gọi hàm area() trong hai biến này.
Bài 2: Viết một chương trình mẹ với một lớp con kế thừa. Cả hai đều phải có method void
display () để print một message (message của mẹ và con khác nhau). Trong phần chính, định
nghĩa lớp con và gọi method display() dựa trên lớp con.
Bài 3: Viết một chương trình với lớp mẹ animal. Trong chương trình này, định nghĩa các
biến tên, tuổi và hàm set_value(). Sau đó tạo hai biến cơ bản Zebra và Dolphin để viết message
thông báo tên tuổi và những thông tin khác (như nguồn gốc). Bài 4:
a. Tạo một lớp Vehicle với các thuộc tính max_speed và bản sao tổng số.
b. Tạo một lớp Vehicle không có biến và phương thức nào cả.
c. Tạo một lớp con Bus kế thừa mọi biến và phương thức của lớp cha Vehicle.
d. Hãy đưa ra đối số sức chứa của Bus.seating_capacity() một giá trị mặc định là 50.
e. Xác định mỗi đối tượng của Bus thuộc lớp nào.
f. Xác định nếu School_bus cũng là một bản sao của lớp Vehicle
Xây dựng lớp Nguoi gồm:
• Thuộc tính: hoten, gioitinh, tuoi • Phương thức: o Cấu tử o Hủy o Nhập o Xuất
Xây dựng lớp Hanhkhach (mỗi hành khách được mua nhiều vé) kế thừa lớp Nguoi bổ sung thêm:
• Thuộc tính: Vemaybay *ve; int soluong; • Phương thức: o Cấu tử o Hủy o Nhập o Xuất
o tongtien(): trả về Tổng số tiền phải trả của hành khách
Chương trình chính: Nhập vào 1 danh sách n hành khách (n nhập từ bàn phím).
Hiển thị danh sách hành khách và số tiền phải trả tương ứng của mỗi khách hàng.
Sắp xếp danh sách hành khách theo chiều giảm dần của Tổng tiền.
1. Giả sử Công ty có hai loại nhân viên: Nhân viên văn phòng và Nhân viên
sản xuất. Viết chương trình quản lý và tính lương cho từng nhân viên của công ty:
Mỗi nhân viên cần quản lý các thông tin sau: Họ tên, ngày sinh, lương
Công ty cần tính lương cho nhân viên như sau: Đối với nhân viên sản xuất:
Lương=lương căn bản + số sản phẩm * 5.000 Đối nhân viên văn phòng:
lương = số ngày làm việc * 100.000
2. Xây dựng các loại đối tượng sinh viên, học sinh, công nhân, nghệ sĩ, ca
sĩ. Viết chương trình cho phép nhập vào một trong các loại đối tượng kể trên. In
thông tin đối tượng đó.
3. Tạo một danh sách các đối tượng, mỗi đối tượng thuộc một trong các
loại: sinh viên, học sinh, công nhân, nghệ sĩ, ca sĩ. Viết chương trình cho phép
nhập danh sách kể trên, in thông tin của từng đối tượng trong danh sách.
6. Một nông trại chăn nuôi có 3 loại gia súc: bò, cừu, và dê. Mỗi loại gia
súc đều có thể sinh con, cho sữa và phát ra tiếng kêu riêng của chúng. Khi đói,
các gia súc sẽ phát ra tiếng kêu để đòi ăn. Sau một thời gian chăn nuôi, người
chủ nông trại muốn thống kê xem trong nông trại có bao nhiêu gia súc ở mỗi
loại, tổng số lit sữa mà tất cả các gia súc của ông đã cho.
Áp dụng kế thừa, xây dựng chương trình cho phép người chủ nông trại
nhập vào số lượng gia súc ban đầu ở mỗi loại.
a. Một hôm người chủ nông trại đi vắng, tất cả gia súc trong nông trại đều
đói. Hãy cho biết những tiếng kêu nghe được trong nông trại.
b. Chương trình sẽ đưa ra thống kê các thông tin người chủ mong muốn
(nêu trên) sau một lứa sinh và một lược cho sữa của tất cả gia súc. Biết rằng:
Tất cả gia súc ở mỗi loại đều sinh con.
• Số lượng sinh của mỗi gia súc là ngẫu nhiên.
• Tất cả gia súc ở mỗi loại đều cho sữa.
• Số lit sữa mỗi gia súc cho là ngẫu nhiên nhưng trong giới hạn sau: • Bò: 0 – 20 lít. • Cừu: 0 – 5 lít. • Dê: 0 – 10 lít.
• Xây dựng các loại đối tượng sách giáo khoa, tiểu thuyết, tạp chí. Viết
chương trình cho phép quản lý một danh sách các loại đối tượng kể trên.
Mỗi loại trên đều có thông tin chung như sau: Tên, Nhà xuất bản, Năm xuất bản, Số trang, Giá bán.
Đối với SGK có thêm thông tin về khối lớp; đối với tiểu thuyết có thêm thông tin
về thể loại (giả tưởng, hình sự, kinh dị,…); đối với tạp chí có thêm thông tin về
về dạng tạp chí theo định kỳ xuất bản (tuần san, nguyệt san, quý san,…)

2. Xây dựng lớp DaGiac thể hiện khái niệm đa giác với các thao tác cần
thiết (nhập, xuất, tịnh tiến). Dùng kế thừa xây dựng các lớp tứ giác, tam giác.
Viết chương trình cho phép nhập vào một tam giác hoặc tứ giác. Xuất và thực
hiện các thao tác tịnh tiến hình đã nhập.
3. Thêm vào bài 2 các hình hình bình hành, hình chữ nhật và hình vuông.
Định nghĩa lại các thao tác ở lớp con nếu cần. Xuất và thực hiện thao tác tịnh tiến hình đã nhập.
4. Viết chương trình cho phép nhập vào một trong các hình (tam giác, tứ
giác, hình bình hành, hình chữ nhật, hình vuông) kể trên, xuất và thực hiện
phép tịnh tiến cho các hình đã nhập.
5. Viết chương trình tính diện tích và chu vi các hình: Hình chữ nhật biết
hai cạnh, hình tam giác biết ba cạnh, hình tròn biết bán kính. Chương trình có
giao diện như sau: 1. Nhập kích thước các hình; 2. Hiện thị diện tích và chu vi
các hình đã nhập; 3. Kết thúc chương trình.Lựa chọn công việc (1, 2, 3):Khi
người sử dụng chọn 1 thì hỏi người sử dụng nhập kích thước cho hình nào, nhập
xong hỏi người sử dụng có nhập tiếp không. Yêu cầu trong chương trình có cài
đặt sự đa hình liên kết động.
. Công ty XYZ quản lý việc mua hàng của 3 loại khách hàng:
• Loại A: Khách hàng bình thường (gồm x khách hàng):
Số tiền khách hàng trả = Số lượng hàng * đơn giá hàng + Thuế VAT (10%)
• Loại B: Khách hàng thân thiết (gồm y khách hàng):
Phần trăm khuyến mãi = MAX (Số năm thân thiết * 5%, 50%)
Số tiền khách hàng trả = (Số lượng hàng * đơn giá hàng) * (100% – Phần trăm
khuyến mãi) + Thuế VAT (10%)
• Loại C: Khách hàng đặc biệt (gồm z khách hàng):
Số tiền khách hàng trả = (Số lượng hàng * đơn giá hàng) *50% + Thuế VAT (10%)
Viết chương trình thực hiện các yêu cầu sau:
• Nhập danh sách khách hàng từ file văn bản XYZ.INP. 0< x,y,z<1000.
• Sử dụng con trỏ hàm để tính Tổng số tiền mỗi khách hàng trong danh
sách phải trả. Xuất kết quả ra file XYZ.OUT dưới định dạng theo quy định.
• Thiết kế và xây dựng các lớp để giải quyết bài toán tính Tổng số tiền công
ty thu được. Xuất kết quả ra file XYZ.OUT dưới định dạng theo quy định. XYZ.INP XYZ.OUT x y z TenKhachHangA1 SoTienPhaiTraA1 ……………… TenKhachHangAx SoTienPhaiTraAx TenKhachHangB1 SoTienPhaiTraB1 ……………… TenKhachHangBy SoTienPhaiTraBy TenKhachHangC1 SoTienPhaiTraC1 ……………… TenKhachHangCz SoTienPhaiTraCz TongSoTienCongTyThuDuoc
4. Khách sạn SOFITEL có 3 loại phòng với doanh thu phòng của tháng được tính như sau:
• Loại Deluxe: doanh thu phòng = (Số đêm * 750000 + Phí dịch vụ) * (100% + Phí phục vụ)
• Loại Premium: doanh thu phòng = (Số đêm * 500000 + Phí dịch vụ) * 105%
• Loại Business: doanh thu phòng = Số đêm * 300000
Viết chương trình thực hiện các yêu cầu sau:
• Nhập danh sách các phòng được sử dụng từ tập tin văn bản SOFITEL.INP. d: số phòng
loại Deluxe, p: số phòng loại Premium, b: số phịng loại Business (0• Sử dụng con trỏ hàm để tính doanh thu từng loại phòng khách sạn thu được. Xuất kết quả
ra file SOFITEL.OUT dưới định dạng theo quy định.
• Thiết kế và xây dựng các lớp để liệt kê phòng có doanh thu vượt trội. Biết phòng có
doanh thu vượt trội thỏa tính chất:
o Doanh thu tháng >= Doanh thu tháng trước * 125%
o Xuất kết quả ra file SOFITEL.OUT dưới định dạng theo quy định. SOFITEL.INP SOFITEL.OUT d p b MaPhongD1 SoDemD1 PhiDichVuD1 PhiPhucVuD1 … MaPhongDd SoDemDd PhiDichVuDd PhiPhucVuDd MaPhongP1 SoDemP1 PhiDichVuP1 … MaPhongPp SoDemPp PhiDichVuPp MaPhongB1 SoDemB1 … MaPhongBb SoDemBb
5. Cho N hình, gồm các loại hình: tam giác, chữ nhật, hình vuông,
hình tròn (đọc từ file).
• Các hình được mô tả với các thông số như sau:
o Hình tam giác: ký hiệu l ‘G’ kèm theo tọa độ 3 đỉnh.
o Hình chữ nhật: ký hiệu l ‘C’ kèm theo tọa độ góc trái trên và chiều dài
(theo trục Ox) và chiều rộng (theo trục Oy).
o Hình vuông: ký hiệu l ‘V’ kèm theo tọa độ góc trái trên và chiều dài cạnh.
o Hình tròn: ký hiệu l ‘T’ kèm theo tọa độ tâm và bán kính.
• Mỗi tọa độ được xác định bởi hai số nguyên.
Tìm hình chữ nhật nhỏ nhất bao quanh N hình được cho xác định bởi tọa độ
góc trái trên và chiều dài, chiều rộng của hình chữ nhật đó. Xuất kết quả ra tập tin văn bản như ví dụ sau:
Yêu cầu: thiết kế các lớp đối tượng để giải quyết sao cho chương trình có khả
năng tiến hóa, dễ dàng thêm các loại hình mới.
Cho sẵn 3 hàm số: • f(x) = k1*x – 3
g(x) = -3x mũ 2 + k2*x
• h(x) = 7x mũ 3 + k3*x mũ 2 – 5
và 3 tham số min, max, step.
Viết chương trình thực hiện các yêu cầu sau:
• Đọc 6 tham số trên từ tập tin KHAOSAT.INP. Tập tin chỉ gồm một dòng
duy nhất chứa 6 số thực k1, k2, k3, min, max, step (mỗi số cách bởi một khoảng trắng)
• Sử dụng con trỏ hàm để in bảng giá trị của 3 hàm trên trong khoảng
[min, max] với bước nhảy l step ra tập tin KHAOSAT.OUT. Dòng đầu tiên chứa
các số ứng với gi trị của x khảo st: x1, x2, x3, … (mỗi số cách nhau bởi đúng
một khoảng trắng) với x1 = min, x2 = min+step, … Dòng thứ hai chứa cc gi trị
f(x1), f(x2), f(x3), … Tương tự, dòng thứ ba cho hàm g và dòng thứ tư cho hàm h.
• Thiết kế và xây dựng các lớp để in ra bảng giá trị đạo hàm ra tập tin
KHAOSAT.OUT. Dòng tiếp theo đầu tiên chứa các số f’(x1), f’(x2), f’(x3), …
Tương tự cho hai dòng kế tiếp ứng với g’ và h’. KHAOSAT.INP KHAOSAT.OUT -2 0 2 -5 -3 -1 -16 0 -8 1 2 3 -2 2 2 -49 -5 63 1 1 1 14 2 -10 72 0 96
7. Viết chương trình tính diện tích và chu vi các hình: Hình chữ nhật
biết hai cạnh, hình tam giác biết ba cạnh, hình tròn biết bán kính.
Chương trình có giao diện như sau:

1. Nhập kích thước các hình
2. Hiện thị diện tích và chu vi các hình đã nhập
3. Kết thúc chương trình Lựa chọn công việc (1, 2, 3):
Khi người sử dụng chọn 1 thì hỏi người sử dụng nhập kích thước cho hình nào,
nhập xong hỏi người sử dụng có nhập tiếp không. Yêu cầu trong chương trình có
cài đặt sự đa hình liên kết động. Chương 4. Khuôn hình
1. Áp dụng function template để giải các bài tập sau:
• Tìm min, max giữa 2 phần tử kiểu T (int, float, PhanSo, …).
• Tìm phần tử dương lớn nhất trong mảng kiểu T (int, float, PhanSo, …).
• Sắp xếp tăng dần mảng kiểu T (int, float, PhanSo, …).
2. Có 4 yêu cầu sắp xếp trên một dãy số nguyên như sau:
• Sắp xếp dãy số nguyên theo thứ tự tăng dần.
• Sắp xếp dãy số nguyên theo thứ tự giảm dần của gi trị tuyệt đối.
• Sắp xếp các số nguyên chẳn tăng dần và các số nguyên lẻ giảm dần.
• Sắp xếp các số nguyên âm giảm dần, các số nguyên dương tăng dần, và
các số dương âm xếp trước các số nguyên dương. Yêu cầu:
a. Bạn hãy thiết kế và cài đặt 4 thuật toán sắp xếp trên theo phương pháp lập trình hướng đối tượng để tận dụng tối đa mã nguồn.
b. Nếu phải thay đổi kiểu dữ liệu, bạn hãy tổng quát hóa các thuật toán sắp xếp
trên để có thể sắp xếp các dãy số có kiểu dữ liệu bất kì. (sử dụng template 3
Document Outline

  • Chương 1. Mở đầu
  • Chương 3. Thừa kế
    • . Công ty XYZ quản lý việc mua hàng của 3 loại khách hàng:
    • 4. Khách sạn SOFITEL có 3 loại phòng với doanh thu phòng của tháng được tính như sau:
      • 5. Cho N hình, gồm các loại hình: tam giác, chữ nhật, hình vuông, hình tròn (đọc từ file).
      • • Cho sẵn 3 hàm số:
      • 7. Viết chương trình tính diện tích và chu vi các hình: Hình chữ nhật biết hai cạnh, hình tam giác biết ba cạnh, hình tròn biết bán kính. Chương trình có giao diện như sau:
  • Chương 4. Khuôn hình
    • 1. Áp dụng function template để giải các bài tập sau:
    • 2. Có 4 yêu cầu sắp xếp trên một dãy số nguyên như sau: