Tạo một ADT có tên là Array và lưu trữ trong file Array.h ADT này bao gồm 2 thành phần thông tin: Max: mảng các giá trị số thực Count: số lượng các giá trị lưu trữ trong mảng Max ADT này
Trang 1BÁO CÁO MÔN KĨ THUẬT LẬP TRÌNH Giảng viên: TS.Vũ Thị Hương Giang
Phần chữa bài tập nhóm 11
Lớp KSCLC K55 – Nhóm 10
1 Nguyễn Công Chính MSSV 20100088
Bài tập:
A Tạo một ADT có tên là Array và lưu trữ trong file Array.h
ADT này bao gồm 2 thành phần thông tin:
Max: mảng các giá trị số thực
Count: số lượng các giá trị lưu trữ trong mảng Max
ADT này cho phép thực hiện một số thao tác trên mảng số thực:
i Khởi tạo một phiên bản mới của chính nó
ii Gán giá trị cho các thành phần thông tin của một đối tương Array
iii Sắp xếp các phần tử của mảng theo giải thuật bubble sort
iv Sắp xếp các phần tử của mảng theo giải thuật insertion sort
v Sắp xếp các phần tử của mảng theo giải thuật selection sort
vi Tìm giá trị lớn nhất được lưu trữ trong mảng và vị trí của các phần tử có giá trị lớn nhất trong mảng
vii Tìm giá trị nhỏ nhất được lưu trữ trong mảng và vị trí của các phần tử có giá
trị nhỏ nhất trong mảng
viii Tìm giá trị trung bình của các phần tử trong mảng
ix Tìm độ lệch về giá trị giữa 2 phần tử có vị trí biết trước trong mảng
x Tìm độ lệch trung bình về giá trị của các phần tử trong mảng
Trang 2xi Tìm kiếm (theo giải thuật sequential search) phần tử của mảng có giá trị là
x ; nếu tìm thấy thì đưa ra vị trí của phần tử đó trong mảng, nếu không thì trả lại giá trị là 0
xii Tìm kiếm (theo giải thuật binary search) phần tử của mảng có giá trị là x ;
nếu tìm thấy thì đưa ra vị trí của phần tử đó trong mảng, nếu không thì thông báo là không tìm thấy phần tử như vậy
xiii Biểu diễn độ phức tạp tính toán theo ký pháp big-O và hiện thị thời gian tính
toán thực tế bằng micro-second
B Viết một chương trình cung cấp các chức năng để kiểm tra ADT này;
chương trình được lưu trữ trong file CheckArray.c Hàm menu() : gồm các tùy chọn
1-13: các chức năng tính toán trên mảng
Tùy chọn 1: có menu con cho phép
Nạp thông tin vào từ bàn phím hoặc từ 1 file dữ liệu vào/ra (I/O data file) Quay lại menu chính
Tùy chọn 2-13: có menu con cho phép
In kết quả ra màn hình hoặc ra 1 file dữ liệu vào/ra (I/O data file)
Quay lại menu chính
Nhận xét chương trình của nhóm 11:
I Nhận xét chung
- Công cụ được sử dụng là Dev-C++ 4.9.9.2, ngôn ngữ viết C++.
- Chương trình chạy không có lỗi, thử với các bộ số kiểm tra đều cho ra kết
quả đúng
- Code viết rõ ràng, dễ đọc, mỗi chức năng đều có phần giải thích cụ thể.
- Chương trình đáp ứng được đa số các trường hợp thực tế có thể xảy ra
Chỉ trừ trường hợp nếu quá trình nhập có lẫn kí tự không phải số, vòng lặp
sẽ bị lỗi Đây là điểm yếu khó xử lí (nhóm 10 chúng em cũng mắc phải tương tự)
II Chi tiết
1 Chức năng nhập/xuất dữ liệu.
- Thông tin lưu trữ dưới dạng cấu trúc (struct).
Trang 3- Mảng lưu trữ số thực dưới dạng mảng động, số lượng phần tử có thể khai
báo trong lúc chạy chương trình, vậy nên tiết kiệm được bộ nhớ so với dùng mảng tĩnh, hạn chế trường hợp tràn mảng hay thiếu bộ nhớ
- Dữ liệu nhập từ bàn phím, quá trình nhập bắt buộc không được lẫn kí tự
khác số
2 Chức năng sắp xếp.
- Ba chức năng sắp xếp là Bubble Sort, Insertion Sort và Selection Sort đều
được cài đặt đúng
3 Chức năng tìm kiếm.
- Sequential Search và Binary Search được cài đặt đúng.
4 Các chức năng khác (tìm giá trị trung bình, độ lệch trung bình, ….)
- Các chức năng này đều được cài đặt đúng, thuật toán đơn giản, dễ hiểu.
5 Chương trình kiểm tra và hình thức trình bày.
- Chương trình kiểm tra được cài đặt đúng, có đầy đủ các menu như yêu
cầu bài tập
- Code viết rõ ràng, dễ đọc, các câu lệnh, vòng lặp, rẽ nhánh đều có khoảng
cách hợp lí, phù hợp
- Giao diện chương trình hợp lí, dễ dàng thao tác lựa chọn các chức năng.
III Kết luận
- Bài tập này không quá khó nhưng cũng không dễ Với chương trình của nhóm 11 theo nhóm 10 chúng em đã đáp ứng được khá đầy đủ các yêu cầu Một vài hạn chế do thời gian có không quá nhiều (thời gian làm bài rơi vào Tết) và trình độ của chúng em còn chưa cao, vẫn cần phải học thêm nhiều kiến thức mới
- Qua bài tập này chắc chắn nhóm em và các nhóm khác sẽ học thêm được nhiều kiến thức mới về kĩ thuật lập trình Chúng em mong cô sẽ tiếp tục gửi thêm nhiều bài tập để chúng em có thể tiếp tục học tập và rèn luyện thêm