Trường Cao đẳng Công ngh Thông tin Tp. H Chí Minh
Bài tp thc hành Môn Cu trúc D
liu- Khoa Công ngh Thông tin
Thời lượng: 60 tiết
Môi trường cài đặt: Visual C++ 6.0 (console)
Lch trình thc hành
Phn I: Bài tp tìm kiếm và sp xếp trên mng 1 chiu (20 tiết)
Bài 1 (04 tiết):
Viết chương trình cài đặt 2 gii thut tìm kiếm: tuyến tính và nh
phân (gi sy s đầu
vào có th t tăng dần).
Hướng dn: Xây dng các hàm sau:
i) To ngu nhiên mng mt chiu s nguyên có th t tăng dần
gm N phn t cho
trưc: void PhatSinhMangTang(int a[], int N)
ii) Xem mng phát sinh: void XuatMang(int a[], int N)
iii) Tìm tuyến tính: int TimTuyenTinh(int a[], int N, int X)
iv) Tìm nh phân: int TimNhiPhan(int a[], int N, int X)
v) Hàm chính (main()):
- Phát sinh mảng tăng a với kích thưc N cho trước (không phi
sp xếp).
- Xut mng xem kết qu phát sinh.
- Nhp giá tr cn tìm x.
- Tìm x theo 2 phương pháp.
- In kết qum: Nếu tìm thy thì cho biết v trí tìm thấy, ngược li
in kết qu không
tìm thy cho từng phương pháp.
Bài 2 (01 tiết):
B sung Bài 1 sao cho chương trình phải xác định được s ln so
sánh và v trí tìm thy
(nếu có) ca phn t cn tìm (gi s dãy s đầu vào có th t tăng
dn).
GV: Trn Minh Thái Trang 2/8
Hướng dẫn: Thay đổi 2 hàm tìm trong Bài 1 như sau:
i) Tìm tuyến tính có chèn vào giá tr ss tính s ln so sánh vi phn
t cn tìm:
int TimTuyenTinh(int a[], int N, int X, int &ss)
ii) Tìm nh phân có chèn vào giá tr ss tính s ln so sánh vi phn
t cn tìm:
int TimNhiPhan(int a[], int N, int X, int &ss)
iii) Hàm chính (main()):
- Phát sinh mng tăng a với kích thước N cho trước (không phi
sp xếp).
- Xut mng xem kết qu phát sinh.
- Nhp giá tr cn tìm x
- Tìm x theo 2 phương pháp
- In kết qu tìm: Gm v trí (nếu tìm thy x) và s ln so sánh cho
từng phương pháp.
Bài 3 (05 tiết):
Ci tiến Bài 2 sao cho: Nếu dãy không có th t thì áp dng
phương pháp tìm tuyến tính,
ngược li dãy có th t thì áp dng phương pháp tìm nh phân.
Hướng dn: Xóa hàm PhatSinhMangTang b sung thêm mt s
hàm sau:
i) Tìm nh phân cho trường hp dãy gim dn (trường hp dãy
tăng dần s dng li hàm
TimNhiPhan Bài 2):
int TimNhiPhan2(int a[], int N, int X, int &ss)
ii) Kim tra xem mng có th t tăng? (trả v true: nếu tăng,
ngược li tr v false)
bool KiemTraTang(int a[], int N)
iii) Kim tra xem mng có th t gim? (tr v true: nếu gim,
ngược li tr v false)
bool KiemTraGiam(int a[], int N)
iv) Phát sinh mng ngu nhiên, sao cho có th ng, giảm hoc
ngu nhiên
void PhatSinhMang(int a[], int N)
v) Hàm chính (main()):
- Phát sinh mng a với kích thước N cho trước.
- Xut mng xem kết qu phát sinh.
- Nhp giá tr cn tìm x
- Kim tra nếu mng có th t tăng thì gi hàm TimNhiPhan
Ngược li, nếu mng có th t gim thì gi hàm TimNhiPhan2
Trường hp còn li thì gi hàm TimTuyenTinh (mng không có th
t)
- In kết qu như Bài 2