Nguyễn Duy Khánh Linh – 20204839 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI BÁO CÁO KỸ THUẬT LẬP TRÌNH Thực hành gỡ rối, kiểm thử và tinh chỉnh mã nguồn BUỔI 5 – TUẦN 42 NGUYỄN DUY KHÁNH LINH Linh ndk204839@sis[.]
Nguyễn Duy Khánh Linh – 20204839 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI BÁO CÁO KỸ THUẬT LẬP TRÌNH Thực hành gỡ rối, kiểm thử tinh chỉnh mã nguồn BUỔI – TUẦN 42 NGUYỄN DUY KHÁNH LINH Linh.ndk204839@sis.hust.edu.vn Ngành Kỹ Thuật Lập Trình – IT2 Giảng viên hướng dẫn: Lê Thị Hoa Bộ mơn: Kỹ thuật lập trình Viện: Công nghệ Thông tin Truyền thông IT3040 – 20212 – 715027 HÀ NỘI, 23/5/2022 Chữ ký GVHD Nguyễn Duy Khánh Linh – 20204839 MỤC LỤC Bài thực hành – tuần 42: Thực hành gỡ rối, kiểm thử tinh chỉnh mã nguồn Phần Thực hành gỡ rối I Hướng dẫn tìm số lỗi cú pháp (Syntax Error) thường gặp .3 II Thực hành sửa lỗi cú pháp Bài tập 1: Tìm sửa lỗi cú pháp Bài tập 2: Tìm sửa lỗi cú pháp III Hướng dẫn tìm số lỗi thực thi (Runtime Error) .6 IV Hướng dẫn tìm số lỗi logic .6 V Tìm vị trí lỗi trình debug VI Tìm vị trí lỗi cách in hình / file log VII Thực hành sửa lỗi thực thi lỗi logic Bài tập 3: Dãy ngoặc Phần 2: Kiểm thử .8 I Hướng dẫn II Thực hành Bài tập 4: Bài toán người du lịch .9 Phần Tinh chỉnh mã nguồn .11 Bài tập 5: Năm nhuận 11 Bài tập 6: Tổng kết 12 Bài tập 7: Chia tiền 14 Phần 4: Bài tập nhà 15 Bài tập 8: Cắt hình chữ nhật 15 Bài tập 9: Xây tháp 17 IT3040 – 20212 – 715027 Nguyễn Duy Khánh Linh – 20204839 Bài thực hành 5: Thực hành gỡ rối, kiểm thử tinh chỉnh mã nguồn Phần Thực hành gỡ rối I II Hướng dẫn tìm số lỗi cú pháp (Syntax Error) thường gặp Thực hành sửa lỗi cú pháp Bài tập 1: Tìm sửa lỗi cú pháp Đoạn code sau liệt kê tất hoán vị n số Hãy tìm sửa lỗi cú pháp hướng dẫn Bài làm #include int x[100], mark[100], n; void print(){ for (int i = 1; i printf } void process(int i) { if (i > n){ print(); // sai ten ham printf() -> print() return; } for (int j = 1; j all IT3040 – 20212 – 715027 Nguyễn Duy Khánh Linh – 20204839 void init(){ for (int i = n; i >= 1; i){ all[i] = all[i+1] + v[i]; } } void print() { cout n){ best = sumV; // thieu dau ';' return; //ham void khong tra ve gia tri } process(i+1); sumM += m[i]; sumV += v[i]; process(i+1); sumM -= m[i]; sumV -= v[i]; } int main() { cout > n >> M; for (int i = 1; i > m[i] >> v[i]; init(); IT3040 – 20212 – 715027 Nguyễn Duy Khánh Linh – 20204839 process(1); print(); return 0; } III IV V VI VII Hướng dẫn tìm số lỗi thực thi (Runtime Error) Hướng dẫn tìm số lỗi logic Tìm vị trí lỗi trình debug Tìm vị trí lỗi cách in hình / file log Thực hành sửa lỗi thực thi lỗi logic Bài tập 3: Dãy ngoặc Đề bài: http://codeforces.com/group/Ir5CI6f3FD/contest/269186/problem/H (http://codeforces.com/group/Ir5CI6f3FD/contest/269186/problem/H) Mã nguồn sinh viên, submit bị lỗi runtime (Exit code is -1073741819) Sử dụng công cụ debug trên, tìm sửa lỗi mã nguồn Bài làm #include using namespace std; #include #include int par(string str){ int a = str.length(); stack S; IT3040 – 20212 – 715027 Nguyễn Duy Khánh Linh – 20204839 char x, y; for (int i=0; i> n; for(int i=0; i> str; cout > m; for (int i = 1; i a >> b; cin >> c[a][b]; if (c[a][b] < cmin) cmin = c[a][b]; IT3040 – 20212 – 715027 Nguyễn Duy Khánh Linh – 20204839 } x[1] = 1; flag[1] = true; TRY(2); cout > n; bool found = false; while(n ){ int a; cin >> a; if ((a % == && a % 100 != 0) || (a % 400 == 0)){ found = true; cout h; cin >> m; init(); for (int i=0; i> tmp1 >> tmp2; table[tmp2][tmp1] = 0; } //dp for (int i=1; i> z; a[3 * i - 2].x = x; a[3 * i - 2].y = y; a[3 * i - 2].z = z; a[3 * i - 1].x = y; a[3 * i - 1].y = z; a[3 * i - 1].z = x; a[3 * i].x = z; a[3 * i].y = x; a[3 * i].z = y; } for(int i=0; i