• Yêu cầu: nhập, lưu trữ và xuất ra màn hìnhchuỗi ký tự và sử dụng mảng để lưu trữ chuỗi,... • Yêu cầu: xây dựng hàm để xóa các khoảngtrắng ở đầu và cuối chuỗi được nhập trong bài 1, xóa
Trang 1ðạ i h ọ c M ở TP.H ồ Chí Minh
Khoa Công Ngh ệ Thông Tin
K Ỹ THU Ậ T L Ậ P TRÌNH
Trang 2• Phân tích bài toán m ả ng nhi ề u chi ề u,
• Li ệ t kê các thông tin c ầ n l ư u ý khi áp d ụ ng
vi ệ c khai báo – truy xu ấ t m ả ng nhi ề u
chi ề u,
• Xây d ự ng ch ươ ng trình s ử d ụ ng m ả ng
nhi ề u chi ề u.
Trang 3• Bài toán: nh ậ p ñ i ể m c ủ a các sinh viên
trong 1 l ớ p h ọ c có m dãy bàn, m ỗ i dãy có
Trang 5• Bài toán: nh ậ p vào ma tr ậ n A có kích th ướ c m x
n và ma tr ậ n B có kích th ướ c p x q Hãy ki ể m tra xem có th ể c ộ ng 2 ma tr ậ n này hay không, n ế u
Trang 6ðạ i h ọ c M ở TP.H ồ Chí Minh
Khoa Công Ngh ệ Thông Tin
K Ỹ THU Ậ T L Ậ P TRÌNH
Trang 8• Bài toán: nh ậ p ma tr ậ n A có kích th ướ c mxn
Hãy ki ể m tra xem ma tr ậ n A có ph ả i là ma tr ậ n vuông, ma tr ậ n ñố i x ứ ng, ma tr ậ n chéo hay
không?
• B ướ c 1: phân tích các thành ph ầ n c ủ a m ả ng 2 chi ề u,
• B ướ c 2: v ẽ lưu ñồ và lưu ý c ác tính ch ấ t:
– Ma tr ậ n vuông: m = n,
– Ma tr ậ n ñố i x ứ ng: A[i][j] = A[j][i] v ớ i m ọ i i,j
– Ma tr ậ n chéo: A[i][i] != 0 v ớ i m ọ i i và A[i][j] = 0 v ớ i m ọ i i!=j
• B ướ c 3: vi ế t ch ươ ng trình.
Trang 9• Bài toán: nh ậ p ma tr ậ n A có kích th ướ c mxn và
ma tr ậ n B có kích th ướ c pxq Hãy ki ể m tra xem
có th ể th ự c hi ệ n AxB hay không, n ế u ñượ c hãy tính C=AxB?
Trang 11ðạ i h ọ c M ở TP.H ồ Chí Minh
Khoa Công Ngh ệ Thông Tin
K Ỹ THU Ậ T L Ậ P TRÌNH
Trang 12• Áp d ụ ng con tr ỏ thay th ế cho ma tr ậ n 1
chi ề u trong các bài toán.
Trang 13ñ i ể m góc d ướ i ph ả i và theo hướ ng ñ i lên Ví d ụ
cho tr ườ ng h ợ p m = 4 , n = 5 nh ư sau:
• B ướ c 1: phân tích các thành ph ầ n c ủ a m ả ng 2 chi ề u,
• B ướ c 2: v ẽ lưu ñồ và lưu ý c ác tính ch ấ t:
– ðộ thay ñổ i theo chi ề u d ọ c và ngang sau m ỗ i b ướ c,
– Quy lu ậ t c ủ a ñộ thay ñổ i theo chi ề u d ọ c và chi ề u ngang,
– L ư u ý: ñ i ề u ki ệ n v ượ t ra ngoài gi ớ i h ạ n c ủ a 4 góc,
• B ướ c 3: vi ế t ch ươ ng trình.
1 14 13 12 11
2 15 20 19 10
3 16 17 18 9
4 5
6 7 8
Trang 14• Bài toán: Nh ậ p vào ñ i ể m c ủ a n sinh viên và cho
bi ế t thông tin v ề ñiể m cao nh ấ t và ñiể m trung
bình c ủ a n sinh viên (s ử d ụ ng con tr ỏ ),
• B ướ c 1: phân tích bài toán v ớ i tr ườ ng h ợ p m ả ng 1 chi ề u,
• B ướ c 2: thay th ế m ả ng 1 chi ề u b ằ ng con tr ỏ :
– Khai báo con tr ỏ ,
– Kh ở i t ạ o con tr ỏ ,
– Truy xu ấ t giá tr ị con tr ỏ ,
• B ướ c 3: vi ế t ch ươ ng trình.
Trang 15• B ướ c 2: thay th ế m ả ng 1 chi ề u b ằ ng con tr ỏ :
– Khai báo con tr ỏ ,
– Kh ở i t ạ o con tr ỏ ,
– Truy xu ấ t giá tr ị con tr ỏ ,
• B ướ c 3: vi ế t ch ươ ng trình.
Trang 16Đại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
KỸ THUẬT LẬP TRÌNH
BÀI THỰC HÀNH SỐ 4
Trang 18• Yêu cầu: nhập, lưu trữ và xuất ra màn hình
chuỗi ký tự và sử dụng mảng để lưu trữ chuỗi,
Trang 19• Yêu cầu: xây dựng hàm để xóa các khoảng
trắng ở đầu và cuối chuỗi (được nhập trong bài 1), xóa các khoảng trắng thừa ở giữa các từ
trong chuỗi,
• Lưu ý:
– Vị trí bắt đầu và vị trí cuối cùng của mảng,
– Sự thay đổi độ dài của chuỗi ký tự sau mỗi lần xóa 1
ký tự
Trang 20• Yêu cầu: xây dựng hàm để để đếm số lần xuất
hiện của một chuỗi s2 trong chuỗi đã được nhập trước đó (trong bài 1),
• Lưu ý:
– Tìm vị trí đầu tiên của chuỗi s2 trong chuỗi chính,
– Tìm vị trí đầu tiên của chuỗi s2 trong phần còn lại của chuỗi chính sau khi đã tìm thấy lần trước…
Trang 21• Yêu cầu: xây dựng hàm để viết hoa các ký tự
đầu mỗi từ trong chuỗi đã được nhập trước đó (trong bài 1),
• Lưu ý:
– Kiểm tra ký tự là chữ cái,
– Nhận diện ký tự đầu của mỗi từ.
Trang 23ðạ i h ọ c M ở TP.H ồ Chí Minh
Khoa Công Ngh ệ Thông Tin
K Ỹ THU Ậ T L Ậ P TRÌNH
Trang 26“output.txt” v ớ i quy t ắ c “ký t ự hoa thành ký
t ự thườ ng và ngượ c l ạ i”
• B ướ c 1: phân tích các b ướ c xu ấ t nh ậ p d ữ li ệ u t ừ
t ậ p tin,
• B ướ c 2: phân tích các b ướ c x ử lý chu ỗ i,
• B ướ c 3: vi ế t ch ươ ng trình.
Trang 27– ðầ u/cu ố i chu ỗ i không ñượ c là kho ả ng tr ắ ng,
– Gi ữ a hai t ừ ch ỉ t ồ n t ạ i duy nh ấ t 1 kho ả ng tr ắ ng.
Trang 30Đại học Mở TP.Hồ Chí Minh
Khoa Công Nghệ Thông Tin
KỸ THUẬT LẬP TRÌNH
BÀI THỰC HÀNH SỐ 6
Trang 32• Bước 1: Phân tích mối liên quan của trường hợp
xử lý số n và số n-1, từ đó suy ra công thức truy hồi và điểm hội tụ,
• Bước 2: Xây dựng hàm đệ quy với các thành
phần “gọi chính nó” và thành phần dừng,
• Bước 3: viết chương trình.
Trang 33• Bước 1: Phân tích mối liên quan của trường hợp
xử lý số n và số n-1, từ đó suy ra công thức truy hồi và điểm hội tụ,
• Bước 2: Xây dựng hàm đệ quy với các thành
phần “gọi chính nó” và thành phần dừng,
• Bước 3: viết chương trình.
Trang 35in ra số có thứ tự ngược lại của số n (vd: n=123 sẽ in ra 321) ,
• Bước 1: Phân tích mối liên quan của việc đảo 1 chữ số cuối lên phía trước và thực hiện việc xử
lý phần còn lại và điều kiện để hoàn tất công
Trang 36hoán vị của các phần tử còn lại,
• Bước 2: Xây dựng hàm đệ quy với các thành
phần “gọi chính nó” và thành phần dừng,
• Bước 3: viết chương trình.
Trang 37ðạ i h ọ c M ở TP.H ồ Chí Minh
Khoa Công Ngh ệ Thông Tin
K Ỹ THU Ậ T L Ậ P TRÌNH
Trang 38– Các bài toán m ả ng 2 chi ề u, ma tr ậ n,
– Các bài toán x ử lý chu ỗ i b ằ ng con tr ỏ ,
– Các bài toán xu ấ t nh ậ p d ữ li ệ u qua t ậ p tin,
– Các bài toán ñệ quy.
Trang 39• Th ự c hi ệ n các phép toán ma tr ậ n: c ộ ng, tr ừ ,
nhân.
Trang 40• Bài toán: Th ự c hi ệ n l ạ i bài 1 v ớ i vi ệ c xu ấ t
nh ậ p d ữ li ệ u thông qua t ậ p tin.
Trang 45Thời gian làm bài: 120 phút
Sinh viên ñược sử dụng tài liệu trên giấy
Bài 1:
Bài làm phải ñược lưu lại trong tập tin Bai1.cpp (3ñ):
Nhập vào từ bàn phím hai số nguyên dương m và n (0 < m, n < = 20) Hãy tạo một ma trận xoắn
ốc có kích thước m x n, xuất phát từ ñiểm góc dưới phải và theo hướng ñi lên Kết quả ñược lưu
trong tập tin output.txt Ví dụ cho trường hợp m = 4, n = 5 như sau:
Bài làm phải ñược lưu lại trong tập tin Bai2.cpp (2ñ):
Hãy ñọc vào một văn bản từ tập tin input1.txt Hãy cho biết số ký tự trên mỗi dòng của văn bản
và cho biết giá trị lớn nhất, nhỏ nhất và giá trị trung bình In kết quả ra tập tin output1.txt Hãy in toàn bộ nội dung của văn bản gốc ban ñầu bằng tất cả các ký tự in hoa sang tập tin output2.txt
Hãy in toàn bộ nội dung của văn bản gốc ban ñầu bằng tất cả các ký tự thường sang tập tin
output3.txt Yêu cầu: sử dụng con trỏ ñể lưu trữ chuỗi ký tự
Bài 3:
a/ Bài làm phải ñược lưu lại trong tập tin Bai3A.cpp (1ñ):
Viết chương trình tìm Ước số chung lớn nhất của 2 số nguyên dương bằng phương pháp ñệ quy
b/ Bài làm phải ñược lưu lại trong tập tin Bai3B.cpp (1ñ):
Viết chương trình in ra theo thứ tự ngược lại của một số nguyên dương bằng phương pháp ñệ quy
Bài 4:
Bài làm phải ñược lưu lại trong tập tin Bai4.cpp (3ñ):
Xây dựng lớp HINH_CHU_NHAT ñể biểu diễn một hình chữ nhật và có các thuộc tính DAI, RONG, TAM tương ứng với chiều dài, chiều rộng và tâm của hình chữ nhật (giao ñiểm 2 ñường
Trang 46Page 2 of 2
chéo) Lớp HINH_CHU_NHAT có phương thức getCorner( ) ñể lấy tọa ñộ của ñỉnh trên trái của
hình chữ nhật Xây dựng tiếp toán tử so sánh bằng giữa hai ñối tượng thuộc lớp HINH_CHU_NHAT
TAM là một ñối tượng thuộc lớp TOA_DO (biểu diễn cho tọa ñộ một ñiểm) Lớp TOA_DO có các thuộc tính X, Y biểu diễn hoành ñộ và tung ñộ của 1 ñiểm Lớp TOA_DO có các phương
thức getX( ), getY( ), setX( ), setY( ) ñể lấy giá trị hoặc gán giá trị cho X, Y Ghi chú: các giá trị
tọa ñộ, ñộ dài cạnh ñều là số nguyên dương
Xác nhận của lãnh ñạo khoa Ngày 26 tháng 05 năm 2008
Giảng viên ra ñề
ThS Võ Nhật Vinh