1. Trang chủ
  2. » Luận Văn - Báo Cáo

Project i laptrinh hướng đối tượng

5 116 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 107,85 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tìm hiểu các giải thuật sắp xếp dãy 8 giải thuật: - Sắp xếp kiểu chọn Selection Sort - Sắp xếp nổi bọt Bubble Sort - Sắp xếp kiểu chèn Insertion Sort - Sắp xếp kiểu phân đoạn Quick sort

Trang 1

Project I CHỦ ĐỀ: GIẢI THUẬT VÀ LẬP TRÌNH C

Lớp: KTMT&TT1-K54 Thời gian: 15 tuần (Tuần 2-16)

Bài 1 Giải thuật Sắp xếp (Sorting Algorithms)

1 Tìm hiểu các giải thuật sắp xếp dãy (8 giải thuật):

- Sắp xếp kiểu chọn (Selection Sort)

- Sắp xếp nổi bọt (Bubble Sort)

- Sắp xếp kiểu chèn (Insertion Sort)

- Sắp xếp kiểu phân đoạn (Quick sort)

- Sắp xếp kiểu vun đống (Heap Sort)

- Sắp xếp trộn (Merge Sort)

- Sắp xếp bằng phép đếm phân phối (Distribution Counting)

- Sắp xếp bằng cơ số (Radix Sort): Theo kiểu hoán vị các khóa (Radix Exchange Sort) và sắp xếp

cơ số trực tiếp (Straight Radix Sort)

2 Cài đặt các giải thuật sắp xếp trên (Viết chương trình C)

- Dữ liệu vào trong file văn bản SORT.INP chứa không nhiều hơn 106 khoá và giá trị mỗi khoá

là số tự nhiên không quá 106 Kết quả được ghi ra file văn bản SORT.OUT chứa dãy khoá được sắp, mỗi khoá trên một dòng

- Chương trình có giao diện dưới dạng menu, mỗi chức năng tương ứng với một thuật toán sắp xếp (Gọi các chương trình con)

- Đánh giá, nhận xét về độ phức tạp của các giải thuật sắp xếp trên

Trang 2

Bài 2 Cấu trúc dữ liệu danh sách

1 Tìm hiểu về cấu trúc dữ liệu danh sách (nối đơn, nối kép, nối vòng) Các kỹ thuật xử lý (duyệt,

thêm/bớt phần tử, tìm kiếm)

2 Thực hành viết chương trình C giải bài toán sau:

Lập chương trình quản lý danh sách sinh viên, tuỳ chọn loại danh sách cho phù hợp, chương trình có những chức năng sau: (Hồ sơ một sinh viên giả sử có: Tên, lớp, số điện thoại, điểm

TB …)

- Cho phép nhập danh sách sinh viên từ bàn phím hay từ file

- Cho phép in ra danh sách sinh viên gồm có tên và xếp loại

- Cho phép in ra danh sách sinh viên gồm các thông tin đầy đủ

- Cho phép nhập vào từ bàn phím một tên sinh viên và một tên lớp, tìm xem có sinh viên

có tên nhập vào trong lớp đó không ? Nếu có thì in ra số điện thoại của sinh viên đó

- Cho phép vào một hồ sơ sinh viên mới từ bàn phím, bổ sung sinh viên đó vào danh sách sinh viên, in ra danh sách mới

- Cho phép nhập vào từ bàn phím tên một lớp, loại bỏ tất cả các sinh viên của lớp đó khỏi danh sách, in ra danh sách mới

- Có chức năng sắp xếp danh sách sinh viên theo thứ tự giảm dần của điểm trung bình

- Cho phép nhập vào hồ sơ một sinh viên mới từ bàn phím, chèn sinh viên đó vào danh sách mà không làm thay đổi thứ tự đã sắp xếp, in ra danh sách mới

- Cho phép lưu trữ lại trên đĩa danh sách sinh viên khi đã thay đổi

Trang 3

Bài 3 Cấu trúc dữ liệu ngăn xếp (stack) hàng đợi (queue):

1 Tìm hiểu cấu trúc dữ liệu ngăn xếp, hàng đợi Các kỹ thuật xử lý trên ngăn xếp, hàng đợi

2 Vận dụng viết chương trình C giải bài toán sau:

- Hình vẽ mô tả di chuyển các toa tàu tại một ga xe lửa:

- Ban đầu ở đường ray A chứa các toa tàu đánh số từ 1 tới n theo thứ tự từ trái qua phải, người ta muốn chuyển các toa đó sang đường ray C để được một thứ tự mới là một hoán vị của (1, 2, …, n) theo quy tắc: chỉ được đưa các toa tàu chạy theo đường ray theo hướng mũi tên, có thể dùng đoạn đường ray B để chứa tạm các toa tàu trong quá trình di chuyển

a) Hãy nhập vào hoán vị cần có, cho biết có phương án chuyển hay không, và nếu có hãy đưa ra cách chuyển:

Ví dụ: n = 4; Thứ tự cần có (1, 4, 3, 2)

1)A → C; 2)A → B; 3)A → B; 4)A → C; 5)B → C; 6)B → C

b) Những hoán vị nào của thứ tự các toa là có thể tạo thành trên đoạn đường ray C với luật di chuyển như trên

Bài 4 Cấu trúc dữ liệu cây (Tree) Biểu thứ tiền tố, hậu tố.

- Tìm hiểu về cấu trúc dữ liệu cây (Tree) và các kỹ thuật xử lý

- Tìm hiểu ký pháp tiền tố, trung tố, hậu tố

- Viết chương trình C tính giá trị của một biểu thức:

Input: File văn bản CAL.INP chỉ gồm 1 dòng có không quá 255 ký tự, là một biểu thức số học

dạng trung tố chứa các số thực và các toán tử {(, ), +, -, *, /}

Output: File văn bản CAL.OUT chứa:

- Dạng hậu tố của biểu thức

- Dạng tiền tố của biểu thức

- Kết quả biểu thức đó

Bài 5 Kỹ thuật nhánh cận, bài toán người du lịch

Cho n thành phố đánh số từ 1 đến n và m tuyến đường giao thông hai chiều giữa chúng, mạng lưới giao thông này được cho bởi bảng C cấp nxn, ở đây C[i, j] = C[j, i] = Chi phí đi đoạn đường trực tiếp từ thành phố i đến thành phố j Giả thiết rằng C[i, i] = 0 với ∀i, C[i, j] = +∞ nếu không có đường trực tiếp từ thành phố i đến thành phố j

Một người du lịch xuất phát từ thành phố 1, muốn đi thăm tất cả các thành phố còn lại mỗi thành phố đúng 1 lần và cuối cùng quay lại thành phố 1 Hãy chỉ ra cho người đó hành trình với chi phí ít nhất Bài toán đó gọi là bài toán người du lịch hay bài toán hành trình của một thương gia (Traveling Salesman)

Trang 4

Viết chương trình C giải bài toán này với yêu cầu:

Input: file văn bản TOURISM.INP

™ Dòng 1: Chứa số thành phố n (1 ≤ n ≤ 100) và số tuyến đường m trong mạng lưới giao thông

™ m dòng tiếp theo, mỗi dòng ghi số hiệu hai thành phố có đường đi trực tiếp và chi phí đi trên quãng đường đó (chi phí này là số nguyên dương ≤ 10000)

Output: file văn bản TOURISM.OUT, ghi hành trình tìm được Minh họa:

Bài 6 Bài toán qui hoạch động, bài toán cái túi.

Trong siêu thị có n gói hàng (n ≤ 100), gói hàng thứ i có trọng lượng là W[i] ≤ 100 và trị giá V[i] ≤ 100 Một tên trộm đột nhập vào siêu thị, tên trộm mang theo một cái túi có thể mang được tối đa trọng lượng M ( M ≤ 100) Hỏi tên trộm sẽ lấy đi những gói hàng nào để được tổng giá trị lớn nhất

Viết chương trình giải bài toán trên với yêu cầu:

Input: file văn bản BAG.INP

™ Dòng 1: Chứa hai số n, M cách nhau ít nhất một dấu cách

™ n dòng tiếp theo, dòng thứ i chứa hai số nguyên dương W[i], V[i] cách nhau ít nhất một dấu cách

Output: file văn bản BAG.OUT

™ Dòng 1: Ghi giá trị lớn nhất tên trộm có thể lấy

™ Dòng 2: Ghi chỉ số những gói bị lấy

Bài 7 Thuật toán Dijkstra tìm đường đi ngắn nhất

Có n thành phố (đánh số 1,2,…n) Sơ đồ mạng lưới giao thông của n thành phố cho bởi ma trận A[i,j] trong đó:

- A[i,j] là độ dài đường đi từ thành phố i đến thành phố j

- A[i,j] = ∞ nếu không có đường đi từ thành phố i đến thành phố j

- A[i,j] nguyên, không âm

Trang 5

- Có thể tồn tại đường một chiều hoặc 2 chiều giữa 2 thành phố i, j (Nếu không có chiều từ i đến

j thì A[i,j]= ∞, nhưng có chiều từ j đến i thì A[j,i] = c)

Hãy xác định đường đi ngắn nhất từ thành phố s đến thành phố f

Input: File văn bản MINPATH.INP với nội dung:

- Dòng đầu ghi số n là thành phố (0<n<100), số cung đường m, đỉnh s, đỉnh f Mỗi giá trị cách nhau ít nhất một dấu cách

- m dòng tiếp theo mỗi dòng chứa 3 giá trị i, j, A[i,j] (Cách nhau ít nhất một dấu cách) Cho biết khoảng cách A[i,j] của đường đi từ thành phố i đến thành phố j

Output: File văn bản MINPATH.OUT chứa đường đi ngắn nhất từ đỉnh s đến f và giá trị đường

đi ngắn nhất tìm được Minh họa:

Cách đánh giá:

thuyết, giải thuật cài đặt, kết quả thử nghiệm chương trình)

Ngày đăng: 16/05/2019, 17:11

TỪ KHÓA LIÊN QUAN

w