SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM 
Khoa Khoa học & Kỹ thuật Máy tính 
KỸ THUẬT LẬP TRÌNH 
Bài tập 5 – Tuần 14 
Đệ quy, cấp phát động và kiểu con trỏ 
Bài tập bắt buộc: 
Bài 1. Viết hàm đệ quy để tính tổng các số từ 1 đến n, với n được cho bởi user. 
//return the sum 1+ 2+ 3+ ...+ n 
int sum(int n) 
Bài 2. Viết chương trình nhập một chuỗi ký tự và kiểm tra xem chuỗi đó có đối xứng 
không. 
Ví dụ : Chuỗi ABCDEDCBA là chuỗi đối xứng. 
bool doixung(char *st, int l, int r) 
Bài 3. Sử dụng hàm đệ quy để viết chương trình đảo ngược một số nguyên. 
// with the parameter 12345, it would return 54321 
int reverseDigits(int n) 
Bài 4. Trong 1 hệ thống ngân hàng, mỗi khách hàng được lưu trữ bao gồm các 
thông tin sau: 
struct Account { 
int ID; // ID cua khach hang 
char Name[100]; // ho va ten 
int balance; // account balance 
}; 
Cho các khai báo 
#define MAX 1000 
Account* accounts = new Account[MAX]; 
int count_acc= 0; 
Trong đó, ID là các số định danh duy nhất không trùng nhau và lớn hơn 0. 
Hãy hiện thực các hàm sau: 
// nhập 1 thông tin từ bàn phím, trả về: 
// true nếu thành công, false nếu ID bị trùng hoặc = 0 
// VD sử dụng: bool x = readInput(accounts + i); 
bool readInput(Account* acc); 
// nhập thông tin của tất cả khách hàng 
// dừng khi gặp thông tin không hợp lệ 
int main(); 
Kỹ thuật lập trình 501127 – HK2/2011-2012 1
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM 
Khoa Khoa học & Kỹ thuật Máy tính 
Bài 5. 
#include<iostream.h> 
#include<stdlib.h> 
#include<time.h> 
void output(int** c, int m, int n) { 
for (int i = 0; i < m; i++) { 
for (int j = 0; j < n; j++) { 
cout<<c[i][j]<<" "; 
} 
cout<<endl; 
} 
} 
void deleteMatrix(int** d, int m) { 
for (int i = 0; i < m; i++) { 
delete [] d[i]; 
} 
delete []d; 
} 
void main() { 
int m, n; 
int** a; 
int** b; 
cout<<"Input the dimensions of the Matrix : "; 
cin>>m>>n; 
if (m <= 0 || n <= 0) { 
cout<<"Invalid Input !"<<endl; 
} else { 
init(a, m, n); 
cout<<"The random matrix : "<<endl; 
output(a, m, n); 
transposeMatrix(a, m, n, b); 
cout<<"The transposing matrix : "<<endl; 
output(b, n, m); 
deleteMatrix(a, m); 
deleteMatrix(b, n); 
} 
} 
Hãy hiện thực hàm init()và hàm transposeMatrix()thỏa mãn các yêu cầu sau: 
• init(): tạo ra ma trận a (m hàng , n cột) chứa các số nguyên bằng cách cấp phát động 
chobiến con trỏ a. Sau đó khởi tạo ma trận a chứa các số nguyên ngẫu nhiên từ 0..9 ( Gợi 
ý : sửdụng hàm rand() trong thư viện stdlib.h đã được include sẵn). 
• transposeMatrix(): tạo ma trận b (n hàng, m cột) chứa các số nguyên bằng cách 
cấp phátđộng cho biến con trỏ b. Sau đó, tạo ra ma trận chuyển vị của ma trận a và chứa 
vào ma trận b. 
Kỹ thuật lập trình 501127 – HK2/2011-2012 2
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM 
Khoa Khoa học & Kỹ thuật Máy tính 
Bài tập làm thêm 
Bài 6.Viết hàm đệ quy sumEvenDigit(intn) thực hiện chức năng sau: 
• Trả về -1 nếu n < 0. 
• Trả về tổng của các chữ số chẵn của số n nếu n >= 0. 
Ví dụ :n = 1468952thì kết quả là : 4 + 6 + 8 + 2 = 20. 
Bài 7. Viết hàm đệ quy để viết chương trình tìm giá trị lớn nhất của một mảng số nguyên. 
//return the maximum element in a[] 
int findmin(int a[], int n) 
Bài 8.Cho đoạn chương trình : 
#include <iostream.h> 
void printCombinations(int m, int n) { 
//Coding here 
} 
void main() { 
int m,n; 
cout<<"Input two positive integer : "; 
cin>>m>>n; 
if (m <=0 || n <= 0 || m > n) { 
cout<<"Invalid input !"<<endl; 
} else { 
cout<<"The result is : "<<endl; 
printCombinations(m,n); 
} 
} 
Hãy hiện thực hàm printCombinations()để sinh ra tất cả các tổ hợp chập 
mcủanphần tử từ 1..n. Yêu cầu trong hàm printCombinations()phải gọi 1 hàm đệ 
qui để 
thực hiện việc sinh ra tất cả các tổ hợp này. 
Ví dụ :m = 2 , n = 4. Kết quả xuất ra màn hình sẽ là: 
1 2 
1 3 
1 4 
2 3 
2 4 
3 4 
Bài 9.Viết chương trình xuất tam giác Pascal ra màn hình. Cụ thể như sau: 
• Nhập một số nguyên dương từ bàn phím (lưu vào biến n). 
Kỹ thuật lập trình 501127 – HK2/2011-2012 3
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM 
Khoa Khoa học & Kỹ thuật Máy tính 
• Tính toán tam giác Pascalđến mức n và lưu vào 1 mảng 2 chiều (Yêu cầu: mảng 2 
chiều nàyphải được cấp phát động vừa đủ với kích thước của tam giác Pascal). 
• Xuất mảng 2 chiều này ra màn hình. 
Định nghĩa: Tam giác Pascal chứa các hệ số khi khai triển nhị thức Newton(x + 1)n. 
Ví dụ: n = 4. Kết quả xuất ra màn hình sẽ là: 
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
Bài 10.Viết chương trình xuất ra ma trận xoắn ốc. Cụ thể như sau: 
• Nhập kích thước của ma trận từ bàn phím (lưu vào 2 biến m, n). 
• Tính toán ma trận xoắn ốc và lưu vào 1 mảng 2 chiều ( Yêu cầu : mảng 2 chiều này 
được cấpphát động). 
• Xuất ma trận xoắn ốc ra màn hình. 
Định nghĩa: Ma trận xoắn ốc là ma trận chứa đựng các số từ 1..(m x n) được sắp xếp có 
thứtự tăng dần theo hình xoắn ốc. 
Ví dụ : 
m = 3, n = 5. Kết quả xuất ra màn hinh sẽ là: 
1 2 3 4 5 
12 13 14 15 6 
11 10 9 8 7 
m = 4, n = 4. Kết quả xuất ra màn hình sẽ là: 
1 2 3 4 
12 13 14 5 
11 16 15 6 
10 9 8 7 
Bài 11. Dùng đệ quy để viết chương trình xuất ra một chuỗi mới được tạo thành bởi sao 
chép n chuỗicon s. 
// with the parameters “Hello” and 2 would return the 
string “HelloHello”. 
// if n equals zero, the method should return the empty 
string. 
char* repeat(char* s, int n) 
Bài 12. Viết chương trình giải bài toán tháp Hà Nội. 
-- Hết - 
Kỹ thuật lập trình 501127 – HK2/2011-2012 4

Mais conteúdo relacionado

Mais procurados

Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Minh Ngoc Tran
 
giao trinh c++ Chuong1
giao trinh c++ Chuong1giao trinh c++ Chuong1
giao trinh c++ Chuong1Bễ Nguyễn
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Minh Ngoc Tran
 
Ctdl C05
Ctdl C05Ctdl C05
Ctdl C05giang
 
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01giang
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Minh Ngoc Tran
 
Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-Minh Ngoc Tran
 
Bài tập ôn lập trình
Bài tập ôn lập trìnhBài tập ôn lập trình
Bài tập ôn lập trìnhThai Hoc Vu
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocHồ Lợi
 
Nmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhNmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhMinh Ngoc Tran
 
Bai tap lam quen java
Bai tap lam quen javaBai tap lam quen java
Bai tap lam quen javaTuấn Bùi
 
Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Hồ Lợi
 
Stl vector nguyen_trihai_11520094_khmt06
Stl vector nguyen_trihai_11520094_khmt06Stl vector nguyen_trihai_11520094_khmt06
Stl vector nguyen_trihai_11520094_khmt06Quach Long
 

Mais procurados (19)

Lab4
Lab4Lab4
Lab4
 
Bai de quy
Bai de quyBai de quy
Bai de quy
 
Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3Lap trinh c++ có lời giải 3
Lap trinh c++ có lời giải 3
 
Nmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlapNmlt c05 cau_lenhlap
Nmlt c05 cau_lenhlap
 
giao trinh c++ Chuong1
giao trinh c++ Chuong1giao trinh c++ Chuong1
giao trinh c++ Chuong1
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1
 
Nmlt c06 ham
Nmlt c06 hamNmlt c06 ham
Nmlt c06 ham
 
Ctdl C05
Ctdl C05Ctdl C05
Ctdl C05
 
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01
 
Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2Lập trình c++ có lời giải 2
Lập trình c++ có lời giải 2
 
Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-Nmlt c11 con_trocoban-
Nmlt c11 con_trocoban-
 
C đến C++ phần 1
C đến C++ phần 1C đến C++ phần 1
C đến C++ phần 1
 
Bài tập ôn lập trình
Bài tập ôn lập trìnhBài tập ôn lập trình
Bài tập ôn lập trình
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hoc
 
Nmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanhNmlt c04 cau_lenhdieukienvarenhanh
Nmlt c04 cau_lenhdieukienvarenhanh
 
Nmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytuNmlt c09 chuoi_kytu
Nmlt c09 chuoi_kytu
 
Bai tap lam quen java
Bai tap lam quen javaBai tap lam quen java
Bai tap lam quen java
 
Bài tập CTDL và GT 4
Bài tập CTDL và GT 4Bài tập CTDL và GT 4
Bài tập CTDL và GT 4
 
Stl vector nguyen_trihai_11520094_khmt06
Stl vector nguyen_trihai_11520094_khmt06Stl vector nguyen_trihai_11520094_khmt06
Stl vector nguyen_trihai_11520094_khmt06
 

Semelhante a Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules

Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Kieu Anh Nguyen
 
Bai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBrand Xanh
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhNmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhCuong
 
Cac van de co so kh may tinh
Cac van de co so kh may tinhCac van de co so kh may tinh
Cac van de co so kh may tinhTunAnh346
 
Bài tập CTDL và GT 13
Bài tập CTDL và GT 13Bài tập CTDL và GT 13
Bài tập CTDL và GT 13Hồ Lợi
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Thanh Giảng Lê
 
He thong bai thuc hanh chuong 3
He thong bai thuc hanh chuong 3He thong bai thuc hanh chuong 3
He thong bai thuc hanh chuong 3lethilien1993
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhLong Kingnam
 
Nmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_inNmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_inHuy Nguyễn
 
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhKhánh Trần
 
Bai tapep ctunglop
Bai tapep ctunglopBai tapep ctunglop
Bai tapep ctunglopHồ Lợi
 
10. C - Function And Operator Overload
10. C   - Function And Operator Overload10. C   - Function And Operator Overload
10. C - Function And Operator OverloadDarian Pruitt
 
Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1Tran Trung Dung
 

Semelhante a Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules (20)

Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)Bai tap c.doc (đã phục hồi)
Bai tap c.doc (đã phục hồi)
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
Nmlt c06 ham_in
Nmlt c06 ham_inNmlt c06 ham_in
Nmlt c06 ham_in
 
Bai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tu
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap TrinhNmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
Nmlt C01 Cac Khai Niem Co Ban Ve Lap Trinh
 
C9 templates
C9 templatesC9 templates
C9 templates
 
C9 templates
C9 templatesC9 templates
C9 templates
 
Ontap ltc
Ontap ltcOntap ltc
Ontap ltc
 
Cac van de co so kh may tinh
Cac van de co so kh may tinhCac van de co so kh may tinh
Cac van de co so kh may tinh
 
Bài tập CTDL và GT 13
Bài tập CTDL và GT 13Bài tập CTDL và GT 13
Bài tập CTDL và GT 13
 
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
Bài giảng ngôn ngữ lập trình C cơ bản trường đại học công nghiệp thực phẩm TP...
 
He thong bai thuc hanh chuong 3
He thong bai thuc hanh chuong 3He thong bai thuc hanh chuong 3
He thong bai thuc hanh chuong 3
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 
Nmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_inNmlt c08 mang2_chieu_in
Nmlt c08 mang2_chieu_in
 
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinh
 
Bai tapep ctunglop
Bai tapep ctunglopBai tapep ctunglop
Bai tapep ctunglop
 
10. C - Function And Operator Overload
10. C   - Function And Operator Overload10. C   - Function And Operator Overload
10. C - Function And Operator Overload
 
Bài tập thực hành số 1
Bài tập thực hành số 1Bài tập thực hành số 1
Bài tập thực hành số 1
 
Lesson08
Lesson08Lesson08
Lesson08
 

Mais de Trần Văn Nam

Phan 2 chuong 8 (chuoi ky tu)
Phan 2   chuong 8 (chuoi ky tu)Phan 2   chuong 8 (chuoi ky tu)
Phan 2 chuong 8 (chuoi ky tu)Trần Văn Nam
 
Phan 2 chuong 9 (cau truc)
Phan 2   chuong 9 (cau truc)Phan 2   chuong 9 (cau truc)
Phan 2 chuong 9 (cau truc)Trần Văn Nam
 
Phan 2 chuong 10 (tap tin)
Phan 2   chuong 10 (tap tin)Phan 2   chuong 10 (tap tin)
Phan 2 chuong 10 (tap tin)Trần Văn Nam
 
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trìnhGiáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trìnhTrần Văn Nam
 
Bg chuong trinh dich chuong 3
Bg chuong trinh dich chuong 3Bg chuong trinh dich chuong 3
Bg chuong trinh dich chuong 3Trần Văn Nam
 
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...
Bài giảng ngôn ngữ lập trình c++ chương 7  ra vào dữ liệu   tài liệu, ebook, ...Bài giảng ngôn ngữ lập trình c++ chương 7  ra vào dữ liệu   tài liệu, ebook, ...
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...Trần Văn Nam
 

Mais de Trần Văn Nam (19)

Pointer
PointerPointer
Pointer
 
Phan 2 chuong 8 (chuoi ky tu)
Phan 2   chuong 8 (chuoi ky tu)Phan 2   chuong 8 (chuoi ky tu)
Phan 2 chuong 8 (chuoi ky tu)
 
Phan 2 chuong 9 (cau truc)
Phan 2   chuong 9 (cau truc)Phan 2   chuong 9 (cau truc)
Phan 2 chuong 9 (cau truc)
 
Phan 2 chuong 10 (tap tin)
Phan 2   chuong 10 (tap tin)Phan 2   chuong 10 (tap tin)
Phan 2 chuong 10 (tap tin)
 
Lect09 string
Lect09 stringLect09 string
Lect09 string
 
Lect05 array
Lect05 arrayLect05 array
Lect05 array
 
Huong dan thao_tac_file
Huong dan thao_tac_fileHuong dan thao_tac_file
Huong dan thao_tac_file
 
Cam bien gia toc
Cam bien gia tocCam bien gia toc
Cam bien gia toc
 
Bai tap c
Bai tap cBai tap c
Bai tap c
 
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trìnhGiáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
 
Ctdlgt
CtdlgtCtdlgt
Ctdlgt
 
Chuong 05
Chuong 05Chuong 05
Chuong 05
 
Bg chuong trinh dich chuong 3
Bg chuong trinh dich chuong 3Bg chuong trinh dich chuong 3
Bg chuong trinh dich chuong 3
 
Chapter07 io
Chapter07 ioChapter07 io
Chapter07 io
 
C++ 2011 april_draft
C++ 2011 april_draftC++ 2011 april_draft
C++ 2011 april_draft
 
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...
Bài giảng ngôn ngữ lập trình c++ chương 7  ra vào dữ liệu   tài liệu, ebook, ...Bài giảng ngôn ngữ lập trình c++ chương 7  ra vào dữ liệu   tài liệu, ebook, ...
Bài giảng ngôn ngữ lập trình c++ chương 7 ra vào dữ liệu tài liệu, ebook, ...
 
Tailieuvkt hk3
Tailieuvkt hk3Tailieuvkt hk3
Tailieuvkt hk3
 
Lenh tat auto_cad hk3
Lenh tat auto_cad hk3Lenh tat auto_cad hk3
Lenh tat auto_cad hk3
 
Nhung ad
Nhung adNhung ad
Nhung ad
 

Local sakainame 501127 ktl_trình hlmt1 a01 fall 2013 _ modules

  • 1. TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM Khoa Khoa học & Kỹ thuật Máy tính KỸ THUẬT LẬP TRÌNH Bài tập 5 – Tuần 14 Đệ quy, cấp phát động và kiểu con trỏ Bài tập bắt buộc: Bài 1. Viết hàm đệ quy để tính tổng các số từ 1 đến n, với n được cho bởi user. //return the sum 1+ 2+ 3+ ...+ n int sum(int n) Bài 2. Viết chương trình nhập một chuỗi ký tự và kiểm tra xem chuỗi đó có đối xứng không. Ví dụ : Chuỗi ABCDEDCBA là chuỗi đối xứng. bool doixung(char *st, int l, int r) Bài 3. Sử dụng hàm đệ quy để viết chương trình đảo ngược một số nguyên. // with the parameter 12345, it would return 54321 int reverseDigits(int n) Bài 4. Trong 1 hệ thống ngân hàng, mỗi khách hàng được lưu trữ bao gồm các thông tin sau: struct Account { int ID; // ID cua khach hang char Name[100]; // ho va ten int balance; // account balance }; Cho các khai báo #define MAX 1000 Account* accounts = new Account[MAX]; int count_acc= 0; Trong đó, ID là các số định danh duy nhất không trùng nhau và lớn hơn 0. Hãy hiện thực các hàm sau: // nhập 1 thông tin từ bàn phím, trả về: // true nếu thành công, false nếu ID bị trùng hoặc = 0 // VD sử dụng: bool x = readInput(accounts + i); bool readInput(Account* acc); // nhập thông tin của tất cả khách hàng // dừng khi gặp thông tin không hợp lệ int main(); Kỹ thuật lập trình 501127 – HK2/2011-2012 1
  • 2. TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM Khoa Khoa học & Kỹ thuật Máy tính Bài 5. #include<iostream.h> #include<stdlib.h> #include<time.h> void output(int** c, int m, int n) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout<<c[i][j]<<" "; } cout<<endl; } } void deleteMatrix(int** d, int m) { for (int i = 0; i < m; i++) { delete [] d[i]; } delete []d; } void main() { int m, n; int** a; int** b; cout<<"Input the dimensions of the Matrix : "; cin>>m>>n; if (m <= 0 || n <= 0) { cout<<"Invalid Input !"<<endl; } else { init(a, m, n); cout<<"The random matrix : "<<endl; output(a, m, n); transposeMatrix(a, m, n, b); cout<<"The transposing matrix : "<<endl; output(b, n, m); deleteMatrix(a, m); deleteMatrix(b, n); } } Hãy hiện thực hàm init()và hàm transposeMatrix()thỏa mãn các yêu cầu sau: • init(): tạo ra ma trận a (m hàng , n cột) chứa các số nguyên bằng cách cấp phát động chobiến con trỏ a. Sau đó khởi tạo ma trận a chứa các số nguyên ngẫu nhiên từ 0..9 ( Gợi ý : sửdụng hàm rand() trong thư viện stdlib.h đã được include sẵn). • transposeMatrix(): tạo ma trận b (n hàng, m cột) chứa các số nguyên bằng cách cấp phátđộng cho biến con trỏ b. Sau đó, tạo ra ma trận chuyển vị của ma trận a và chứa vào ma trận b. Kỹ thuật lập trình 501127 – HK2/2011-2012 2
  • 3. TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM Khoa Khoa học & Kỹ thuật Máy tính Bài tập làm thêm Bài 6.Viết hàm đệ quy sumEvenDigit(intn) thực hiện chức năng sau: • Trả về -1 nếu n < 0. • Trả về tổng của các chữ số chẵn của số n nếu n >= 0. Ví dụ :n = 1468952thì kết quả là : 4 + 6 + 8 + 2 = 20. Bài 7. Viết hàm đệ quy để viết chương trình tìm giá trị lớn nhất của một mảng số nguyên. //return the maximum element in a[] int findmin(int a[], int n) Bài 8.Cho đoạn chương trình : #include <iostream.h> void printCombinations(int m, int n) { //Coding here } void main() { int m,n; cout<<"Input two positive integer : "; cin>>m>>n; if (m <=0 || n <= 0 || m > n) { cout<<"Invalid input !"<<endl; } else { cout<<"The result is : "<<endl; printCombinations(m,n); } } Hãy hiện thực hàm printCombinations()để sinh ra tất cả các tổ hợp chập mcủanphần tử từ 1..n. Yêu cầu trong hàm printCombinations()phải gọi 1 hàm đệ qui để thực hiện việc sinh ra tất cả các tổ hợp này. Ví dụ :m = 2 , n = 4. Kết quả xuất ra màn hình sẽ là: 1 2 1 3 1 4 2 3 2 4 3 4 Bài 9.Viết chương trình xuất tam giác Pascal ra màn hình. Cụ thể như sau: • Nhập một số nguyên dương từ bàn phím (lưu vào biến n). Kỹ thuật lập trình 501127 – HK2/2011-2012 3
  • 4. TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM Khoa Khoa học & Kỹ thuật Máy tính • Tính toán tam giác Pascalđến mức n và lưu vào 1 mảng 2 chiều (Yêu cầu: mảng 2 chiều nàyphải được cấp phát động vừa đủ với kích thước của tam giác Pascal). • Xuất mảng 2 chiều này ra màn hình. Định nghĩa: Tam giác Pascal chứa các hệ số khi khai triển nhị thức Newton(x + 1)n. Ví dụ: n = 4. Kết quả xuất ra màn hình sẽ là: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 Bài 10.Viết chương trình xuất ra ma trận xoắn ốc. Cụ thể như sau: • Nhập kích thước của ma trận từ bàn phím (lưu vào 2 biến m, n). • Tính toán ma trận xoắn ốc và lưu vào 1 mảng 2 chiều ( Yêu cầu : mảng 2 chiều này được cấpphát động). • Xuất ma trận xoắn ốc ra màn hình. Định nghĩa: Ma trận xoắn ốc là ma trận chứa đựng các số từ 1..(m x n) được sắp xếp có thứtự tăng dần theo hình xoắn ốc. Ví dụ : m = 3, n = 5. Kết quả xuất ra màn hinh sẽ là: 1 2 3 4 5 12 13 14 15 6 11 10 9 8 7 m = 4, n = 4. Kết quả xuất ra màn hình sẽ là: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 Bài 11. Dùng đệ quy để viết chương trình xuất ra một chuỗi mới được tạo thành bởi sao chép n chuỗicon s. // with the parameters “Hello” and 2 would return the string “HelloHello”. // if n equals zero, the method should return the empty string. char* repeat(char* s, int n) Bài 12. Viết chương trình giải bài toán tháp Hà Nội. -- Hết - Kỹ thuật lập trình 501127 – HK2/2011-2012 4