BÀI TẬP NHÓM MÔN HỌC KĨ THUẬT LẬP TRÌNH – IT3040 TẠO MỘT ADT CÓ TÊN LÀ ARRAY VÀ VIẾT MỘT CHƯƠNG TRÌNH ĐỂ KIỂM TRA ADT ARRAY

17 901 5
BÀI TẬP NHÓM MÔN HỌC KĨ THUẬT LẬP TRÌNH – IT3040 TẠO MỘT ADT CÓ TÊN LÀ ARRAY VÀ VIẾT MỘT CHƯƠNG TRÌNH ĐỂ KIỂM TRA ADT ARRAY

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Báo cáo-Nhóm 03- Trang 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÀI TẬP NHÓM MÔN HỌC KĨ THUẬT LẬP TRÌNH – IT3040 NĂM HỌC 2012-2013 ĐỀ BÀI: TẠO MỘT ADT CÓ TÊN LÀ ARRAY VÀ VIẾT MỘT CHƯƠNG TRÌNH ĐỂ KIỂM TRA ADT ARRAY HÀ NỘI, 2013 Giảng viên hướng dẫn : TS. Vũ Thị Hương Giang Nhóm sinh viên 1 : NGÔ QUỐC CƯỜNG PHẠM HUY HIỆU HOÀNG VĂN TUYỂN NGUYỄN VĂN ĐÔ TRẦN QUỐC TOẢN Lớp : KSCLC-THCN-K55 Mục lục KĨ THUẬT LẬP TRÌNH – IT3040 NĂM HỌC 2012-2013 1 Giảng viên hướng dẫn : TS. Vũ Thị Hương Giang 1 Mục lục 2 Lời mở đầu 3 Đây là một chương trình đơn giản nhằm thực hiện các bài toán nhỏ như tìm kiếm, sắp xếp, tính toán thông qua những giải thuật cơ bản 3 Ngôn ngữ lập trình được sử dụng là ngôn ngữ C 3 Chương 1: Phân tích bài toán lập trình 4 1.1. Yêu cầu 4 1.2. Biểu đồ IPO 5 Tài liệu tham khảo 17 Báo cáo-Nhóm 03- Trang 2 Lời mở đầu Đây là một chương trình đơn giản nhằm thực hiện các bài toán nhỏ như tìm kiếm, sắp xếp, tính toán thông qua những giải thuật cơ bản. Ngôn ngữ lập trình được sử dụng là ngôn ngữ C. Báo cáo-Nhóm 03- Trang 3 Chương 1: Phân tích bài toán lập trình 1.1. Yêu cầu - Tạo một ADT có tên là Array và lưu trữ trong file array.h. ADT này bao gồm hai thành phần thong tin: - Max[]: mảng các giá trị thực - Count: số lượng các phần tử 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: 1. Nhập mảng 2. Hiển thị mảng 3. Sắp xếp các phần tử của mảng theo thuật toán sắp xếp nổi bọt 4. Sắp xếp các phần tử của mảng theo thuật toán sắp xếp chèn 5. Sắp xếp các phần tử của mảng theo thuật toán sắp xếp chọn 6. Tìm giá trị lớn nhất và vị trí các phần tử có giá trị lớn nhất 7. Tìm giá trị nhỏ nhất và vị trí các phần tử có giá trị nhỏ nhất 8. Tính giá trị trung bình của các phần tử trong mảng 9. Tìm độ lệch về giá trị giữa hai phần tử có vị trí bất kì 10.Tính độ lệch trung bình về giá trị của các phần tử trong mảng 11. Tìm kiếm tuyến tính phần tử của mảng có giá trị là x,nếu tìm thấy thì đưa ra vị trí, nếu không thì trả về 0 12.Tìm kiếm nhị phân phần tử của mảng có giá trị là x,nếu tìm thấy thì thông báo là có phần tử x trong mảng, nếu không thì thông báo là không thấy 13.Biểu thị độ phức tạp thuật toán theo big O và hiển thị thời gian tính toán thực tế bằng micro giây - Viết một chương trình cung cấp các chức năng để kiểm tra ADT này. Báo cáo-Nhóm 03- Trang 4 1.2. Biểu đồ IPO Input Process Output Số lượng phần tử Count Mảng các giá trị thực Max[] Đọc từ bàn phím Xuất ra màn hình Dãy các số thực Số lượng phần tử Count Mảng các giá trị thực Max[] Sắp xếp nổi bọt Dãy các số thực có thứ tự Số lượng phần tử Count Mảng các giá trị thực Max[] Sắp xếp chèn Dãy các số thực có thứ tự Số lượng phần tử Count Mảng các giá trị thực Max[] Sắp xếp lựa chọn Dãy các số thực có thứ tự Số lượng phần tử Count Mảng các giá trị thực Max[] Tìm giá trị lớn nhất trong mảng và so sánh các phần tử mảng với giá trị lớn nhất đó Giá trị lớn nhất trong mảng Vị trí của các phần tử có giá trị lớn nhất Số lượng phần tử Count Mảng các giá trị thực Max[] Tìm giá trị nhỏ nhất trong mảng và so sánh các phần tử mảng với giá trị nhỏ nhất đó Giá trị nhỏ nhất trong mảng Vị trí của các phần tử có giá trị nhỏ nhất Số lượng phần tử Count Mảng các giá trị thực Max[] Tính giá trị trung bình Giá trị trung bình Số lượng phần tử Count Mảng các giá trị thực Max[] Vị trí của hai phần tử Lấy trị tuyệt đối của hệ Độ lệch Số lượng phần tử Count Tính độ lệch trung bình Độ lệch trung bình Báo cáo-Nhóm 03- Trang 5 Mảng các giá trị thực Max[] Số lượng phần tử Count Mảng các giá trị thực Max[] Giá trị cần tìm kiếm Tìm tuần tự Vị trí của giá trị cần tìm kiếm Số lượng phần tử Count Mảng các giá trị thực Max[] Giá trị cần tìm kiếm Tìm nhị phân Thông báo có hay không Tinh thời gian Thời gian Báo cáo-Nhóm 03- Trang 6 Chương 2: Thiết kế giải pháp Bài toán được tiếp cận theo hướng Structure Design (Top-Down Design) Bài toán được phân rã ra thành các bài toán con theo từng module,dựa theo yêu cầu của đề bài,bao gồm : • Đọc dữ liệu vào từ bàn phím hoặc từ 1 file.( nhapmang) • Xuất dữ liệu.( inmang) • Sắp xếp mảng đã nhập theo thuật toán nổi bọt (bubble_sort). • Sắp xếp mảng đã nhập theo thuật toán chèn (insertion_sort). • Sắp xếp mảng đã nhập theo thuật toán lựa chọn(selection_sort). • Tìm giá trị lớn nhất của mảng và đưa ra vị trí của nó trong mảng.( gtri_max) • Tìm giá trị nhỏ nhất của mảng và đưa ra vị trí của nó trong mảng.( gtri_min) • Tính giá trị trung bình của các phần tử đã cho trong mảng.( trungbinhcong) • Tính độ chênh lệch giữa hai phần tử của mảng khi đã biết trước vi trí.( dolech) • Tính độ lệch trung bình của các phần tử trong mảng.( dolechtrungbinh) • Tìm kiếm tuần tự một phần tử trong mảng.( seq_search) • Tìm kiếm nhị phân một phần tử trong mảng.( binary_search) • Tìm thời gian tính toán thực của một trong những công việc trên.( ThoiGianTinh) 1. nhapmang . Sử dụng cấu trúc lặp và tuần tự để nhập số lượng phần tử mảng và giá trị cho mỗi phần tử trong mảng từ bàn phím. 2. inmang. Sử dụng cấu trúc lặp và tuần tự để in ra tất cả các phần tử trong mảng mỗi khi có lời gọi đến hàm. 3. bubble_sort. Tìm giá trị cho vị trí thứ i trong mảng max[] : For(j=1; j<i; j++) If ( max[j] > max[j+1]) max[j] <-> max[j+1]; 4. insertion_sort. Báo cáo-Nhóm 03- Trang 7 Đưa lần lượt các phần tử từ 1-> Count vào vị trí chính xác.Mảng được xem như chỉ có i phần tử khi xét đến vị trí thứ i. j=i ; While(j>1) If (max[j]>max[j-1]) max[j] <->max[j-1]; 5. selection_sort Tìm cách đưa giá trị lớn nhất về đầu mảng hay giá trị nhỏ nhất về cuối mảng (sau mỗi lần thực hiện mảng đã cho bớt đi phần tử vừa xét ) . Để tìm giá trị cho vị trí thứ i. For(j=i+1;j<=Count;j++) If(a[i]<a[j]) max[i] <-> max[j] ; 6. gtri_max Duyệt qua một lượt tất cả các phần tử trong mảng để tìm giá trị lớn nhất. Maxx=max[i]; For(i=1;i<=Count;i++) If max[i]>maxx maxx=max[i]; 7. gtri_min Duyệt qua một lượt tất cả các phần tử trong mảng để tìm giá trị nhỏ nhất. Min=max[i]; For(i=1;i<=Count;i++) If max[i]>min min=max[i]; 8. trungbinhcong Tính tổng giá trị tất cả các phần tử trong mảng sau đó chia cho số lượng các phần tử(Count). Sum=0; For(i=1;i<=Count;i++) Sum=Sum+max[i]; Average=Sum/Count; 9. dolech Lấy trị tuyệt đối của 2 phần tử đã biết trước vị trí trong mảng là i và j. Báo cáo-Nhóm 03- Trang 8 D=abs(max[i]-max[j]) 10. dolechtrungbinh Bình phương độ lệch trung bình (D) là tổng bình phương của độ chênh lệch giữa các phần tử trong mảng và giá trị trung bình. D=0; For(i=1;i<=Count;i++) D=D+pow((max[i]-average),2); Độ lệch trung bình là: delta=sqrt(D); 11. seq_search Duyết qua tất cả các phần tử trong mảng Nếu thấy xuất hiện giá trị cần tìm thì biến kiểm tra =1 và ta trả lại giá trị vị trí Còn nếu không tìm thấy thì biến kiểm tra =0 và trả lại giá trị 0; Kt=0; For(i=1;i<=Count;i++) If(max[i]==x){ kt=1; printf(“%d”,i);} If(kt==0) printf(“khong co gia tri x trong mang”);return 0; 12. binary_search Ta sắp xếp mảng đã cho giảm dần theo các thuạt toán BubbleSort ,SelectionSort hoặc InsertionSort Chia mảng đã cho thành 2 mảng con,so sánh x với giá tri của phần tử đứng giữa.Nếu lớn hơn ta xét tiếp nửa bên trải của mảng,ngược lại ta xét nửa bên phải. p=1;q=Count;kt=0; While(p<q){ r=(p+q)/2; if (p>q) break; else { if(max[r]==x) {kt=1;printf(“%d”,r) } else if(max[r]>x) q=r-1; else p=q+1;} } Báo cáo-Nhóm 03- Trang 9 If(kt==0) printf(“khong thay”); Báo cáo-Nhóm 03- Trang 10 [...]... swap – đổi chỗ 2 phần tử 2 khoitao – Tạo mới một ADT Báo cáo -Nhóm 03- Trang 11 Chương 4: Kiểm tra giải pháp  Chúng tôi đã thử nghiệm chương trình trên rất nhiều các bộ test và đưa ra kết quả chính xác  Kết quả sau khi chạy chương trình Báo cáo -Nhóm 03- Trang 12 1 Kiểm tra và đưa ra lời nhắc nhở để dữ liệu đầu vào hợp lý, nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình Báo cáo -Nhóm 03- Trang 13 Kiểm. . .Chương 3: Cài đặt thiết kế - Mã nguồn chương trình nằm trong 2 file array. h và CheckArray.c - Tên các hàm theo các giải thuật tìm kiếm và sắp xếp được viết theo tiếng Anh, có dấu gạch dưới (‘_’) ngăn cách các từ Các hàm còn lại được viết bằng tiếng Việt Trong file array. h có tất cả 15 hàm trong đó có 13 hàm trong Menu chính của chương trình được đánh số và 2 để thực hiện các chức... từ bàn phím và xuất dữ liệu ra màn hình Báo cáo -Nhóm 03- Trang 13 Kiểm tra khả năng thực thi của các hàm 3 -> 13 Báo cáo -Nhóm 03- Trang 14 Báo cáo -Nhóm 03- Trang 15 Báo cáo -Nhóm 03- Trang 16 Tài liệu tham khảo [1] Slide bài giảng KTLT-Vũ Thị Hương Giang [2] Slide bài giảng Đồ án công nghệ phần mềm-Huỳnh Quyết Thắng Báo cáo -Nhóm 03- Trang 17 . cáo -Nhóm 03- Trang 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÀI TẬP NHÓM MÔN HỌC KĨ THUẬT LẬP TRÌNH – IT3040 NĂM HỌC 2012-2013 ĐỀ BÀI: TẠO MỘT ADT CÓ TÊN LÀ ARRAY VÀ. dụng là ngôn ngữ C. Báo cáo -Nhóm 03- Trang 3 Chương 1: Phân tích bài toán lập trình 1.1. Yêu cầu - Tạo một ADT có tên là Array và lưu trữ trong file array. h. ADT này bao gồm hai thành phần thong. chạy chương trình Báo cáo -Nhóm 03- Trang 12 1. Kiểm tra và đưa ra lời nhắc nhở để dữ liệu đầu vào hợp lý, nhập dữ liệu từ bàn phím và xuất dữ liệu ra màn hình Báo cáo -Nhóm 03- Trang 13 Kiểm tra

Ngày đăng: 16/05/2015, 13:10

Từ khóa liên quan

Mục lục

  • Giảng viên hướng dẫn : TS. Vũ Thị Hương Giang

  • KĨ THUẬT LẬP TRÌNH – IT3040 NĂM HỌC 2012-2013

  • Mục lục

  • Lời mở đầu

  • Đây là một chương trình đơn giản nhằm thực hiện các bài toán nhỏ như tìm kiếm, sắp xếp, tính toán thông qua những giải thuật cơ bản.

  • Ngôn ngữ lập trình được sử dụng là ngôn ngữ C.

  • Chương 1: Phân tích bài toán lập trình

    • 1.1. Yêu cầu

    • 1.2. Biểu đồ IPO

    • Tài liệu tham khảo

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan