1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÀI tập đồ án cấu TRÚC dữ LIỆU và GIẢI THUẬT

61 6 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 1,39 MB

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

Nội dung

Giới thiệu đề bài Xây dựng chức năng tìm kiếm và sắp xếp trên các cấu trúc hỗ trợ quản lý thông tin các môn học bao gồm các thông tin: Mã môn học MaMH, Tên môn học TenMH, Số tín chỉ SoTC

Trang 1

BÔ GIO DC V ĐO TOTRƯỜNG ĐI HỌC TI CHÍNH – MARKETING

KHOA CÔNG NGHỆ THÔNG TIN

THUẬT

Trang 2

LỜI CẢM ƠN

Đầu tiên, em xin chân thành cảm ơn và tri ân sâu sắc đến qúy thầy côTrường Đại học Tài Chính – Marketing , đặc biệt là quý thầy cô khoa Côngnghệ thông tin và thầy Nguyễn Quốc Thanh đã dạy dỗ tận tình cho chúng emnhững tháng ngày vừa qua khi mới là sinh viên năm nhất còn bỡ ngỡ về mộtmôi trường học tập mới , thầy cô luôn quan tâm chúng em hỏi chúng em khônghiểu chỗ nào thì chia sẻ màn hình thầy cô chỉ cho chúng em

Thầy đã truyền đạt cho chúng em rất nhiều kiến thức bổ ích, giúp chúng emngày càng hoàn thiện bản thân mình hơn Cũng là đồ án môn cấu trúc dữ liệu

và giải thuật thì cũng một lần nữa em xinh chúc tất cả các quý thầy cô giáo vàThs.Nguyễn Quốc Thanh ngày càng mạnh khỏe

Em xin chân thành cảm ơn!

Trang 3

MỤC LỤC

CHƯƠNG I: GIỚI THIỆU 1

1.1 Giới thiệu đề bài 1

1.2 Cấu trúc (khai báo/định nghĩa cấu trúc) 1

1.3 Dữ liệu mẫu 2

1.4 Các chức năng trên mảng cấu trúc 2

CHƯƠNG II: TÌM KIẾM V SẮP XẾP TRÊN MẢNG CẤU TRÚC 4

2.1 Nhập danh sách môn học 4

a) Chương trình con 4

b) Kiểm tra (hàm Main kiểm tra ctc) 5

c) Kết quả chạy 5

2.2 Xuất danh sách môn học 5

a) Chương trình con 5

b) Kiểm tra (hàm Main kiểm tra ctc) 6

c) Kết quả chạy 7

2.3 Tìm kiếm thông tin môn học theo mã môn học dùng Liner Search 7

a) Chương trình con 7

a) Kiểm tra (hàm Main kiểm tra ctc) 8

b) Kết quả chạy 9

2.4 Tìm kiếm thông tin môn học theo mã môn học dùng Binary Search 9

a) Chương trình con 9

b) Kiểm tra (hàm Main kiểm tra ctc) 10

c) Kết quả chạy 11

2.5 Tìm kiếm thông tin môn học theo Tên dùng Liner Search 11

a) Chương trình con 11

b) Kiểm tra (hàm Main kiểm tra ctc) 11

c) Kết quả chạy 12

2.6 Tìm kiếm thông tin môn học theo Tên dùng Binary Search 12

a) Chương trình con 12

b) Kiểm tra (hàm Main kiểm tra ctc) 13

Trang 4

c) Kết quả chạy 14

2.7 Hàm hoán vị 14

2.8 Sắp xếp danh sách theo MaMH dùng hàm Shaker Sort 15

a) Chương trình con 15

b) Kiểm tra (hàm Main kiểm tra ctc) 16

c) Kết quả chạy 16

2.9 Sắp xếp danh sách theo MaMH dùng hàm Selection Sort 16

a) Chương trình con 16

b) Kiểm tra (hàm Main kiểm tra ctc) 17

c) Kết quả chạy 18

2.10 Sắp xếp danh sách theo Tên dùng hàm Interchange Sort 18

a) Chương trình con 18

b) Kiểm tra (hàm Main kiểm tra ctc) 18

c) Kết quả chạy 19

2.11 Sắp xếp danh sách theo Khóa học dùng hàm Bubble Sort 19

a) Chương trình con 20

b) Kiểm tra (hàm Main kiểm tra ctc) 20

c) Kết quả chạy 21

2.12 Sắp xếp danh sách theo ĐTB dùng hàm Insertion Sort 21

a) Chương trình con 21

b) Kiểm tra (hàm Main kiểm tra ctc) 22

c) Kết quả chạy 23

2.13 Sắp xếp danh sách theo Tín chỉ dùng hàm Quick Sort 23

a) Chương trình con 23

b) Kiểm tra (hàm Main kiểm tra ctc) 24

c) Kết quả chạy 25

2.14 Sắp xếp danh sách theo MAMH dùng hàm Merge Sort 25

a) Chương trình con 25

b) Kiểm tra (hàm Main kiểm tra ctc) 29

c) Kết quả chạy 30

CHƯƠNG III: TÌM KIẾM V SẮP XẾP TRÊN DSLK 31

3.1 Khởi tạo danh sách liên kết và các chương trình con hỗ trợ 31

3.2 Nhập thông tin môn học 33

a) Chương trình con 33

Trang 5

b) Kiểm tra (hàm Main kiểm tra ctc) 33

c) Kết quả chạy 35

3.3 Xuất thông tin môn học 35

a) Chương trình con 35

b) Kiểm tra (hàm Main kiểm tra ctc) 36

c) Kết quả chạy 38

3.4 Đếm số phần tử có trong danh sách thông tin môn học 38

a) Chuong trình con 38

b) Kiểm tra (hàm Main kiểm tra ctc) 38

c) Kết quả chạy 40

3.5 Tìm kiếm thông tin môn học theo mã môn học bằng Liner Search 40

a) Chương trình con 40

b) Kiểm tra (hàm Main kiểm tra ctc) 41

c) Kết quả chạy 43

3.6 Tìm kiếm thông tin môn học theo tên bằng Liner Search 43

a) Chương trình con 43

b) Kiểm tra (hàm Main kiểm tra ctc) 43

c) Kết quả chạy 45

3.7 Hàm hoán vị hỗ trợ cho một số hàm sắp xếp 45

3.8 Sắp xếp thông tin môn học theo MaMH bằng Selection Sort 46

a) Chương trình con 46

b) Kiểm tra (hàm Main kiểm tra ctc) 47

c) Kết quả chạy 48

3.9 Sắp xếp thông tin môn học theo mã môn học bằng Interchange Sort 48

a) Chương trình con 48

b) Kiểm tra (hàm Main kiểm tra ctc) 49

c) Kết quả chạy 51

3.10 Sắp xếp thông tin môn học theo mã môn học bằng Bubble Sort 51 a) Chương trình con 51

b) Kiểm tra (hàm Main kiểm tra ctc) 52

c) Kết quả chạy 54

Trang 6

3.11 Sắp xếp thông tin môn học theo mã môn học bằng InsertionSort 54

a) Chương trình con 54b) Kiểm tra (hàm Main kiểm tra ctc) 55c) Kết quả chạy 563.12 Sắp xếp thông tin môn học theo mã môn học bằng Quick

Sort 56

a) Chương trình con 56b) Kiểm tra (hàm Main kiểm tra ctc) 58c) Kết quả chạy 60

Trang 7

DANH MỤC BẢNG, HÌNH Ả

Bảng 1 1 Dữ liệu mẫu 2

Y Hình 2 1 Kết quả thông tin môn học 5

Hình 2 2 Xuất thông tin môn học 7

Hình 2 3 Tìm kiếm mã môn học bằng Liner Search 9

Hình 2 4 Tìm kiếm mã môn học bằng Binary Search 11

Hình 2 5 Tìm kiếm tên môn học bằng Liner Search 12

Hình 2 6 Tìm kiếm tên môn học bằng Binary Search 14

Hình 2 7 Sắp xếp mã môn học bằng Shaker Sort 16

Hình 2 8 Sắp xếp mã môn học bằng Selection Sort 18

Hình 2 9 Sắp xếp tên môn học bằng Interchange Sort 19

Hình 2 10 Sắp xếp mã môn học bằng Bubble Sort 21

Hình 2 11 Sắp xếp theo tên môn học bằng Insertion Sort 23

Hình 2 12 Sắp xếp tín chỉ bằng Quick Sort 25

Hình 2 13 Sắp xếp mã môn học bằng Merge Sort 30

Hình 3 1 Kết quả nhập thông tin môn học vào DSLK 35

Hình 3 2 Kết quả xuất danh sách môn học ra màn hình 38

Hình 3 3 Đếm số lượng môn học có trong danh sách 40

Hình 3 4 Tìm kiếm mã môn học có trong danh sách đã nhập ở trên 43

Hình 3 5 Tìm kiếm tên môn học có trong danh sách đã nhập ở trên 45

Hình 3 6 Sắp xếp mã môn học bằng Selection Sort 48

Hình 3 7 Sắp xếp mã môn học bằng Interchange Sort 51

Hình 3 8 Sắp xếp mã môn học bằng Bubble Sort 54

Hình 3 9 Sắp xếp mã môn học bằng Insertion Sort 56

Hình 3 10 Sắp xếp mã môn học bằng Quick Sort 60

Trang 8

CHƯƠNG I: GIỚI THIỆU

1.1 Giới thiệu đề bài

Xây dựng chức năng tìm kiếm và sắp xếp trên các cấu trúc hỗ trợ quản lý thông tin các môn học bao gồm các thông tin: Mã môn học (MaMH), Tên môn học (TenMH), Số tín chỉ (SoTC), Số giờ lý thuyết (GioLT), Số giờ thực hành (GioTH), Số giờ tự học (TuHoc)

1.2 Cấu trúc (khai báo/định nghĩa cấu trúc)

Thông tin môn học cần quản lý gồm:

 MaMH: Mã số môn học, gồm một chuỗi ký tự số có chiều dài 10 ký tự.

 TenMH: Tên môn học, chỉ quản lý các tên Tiếng Việt với chiều dài 15

ký tự

 SoTC: Số tín chỉ, cho biết số lượng tín chỉ của môn học.

 GioLT: Giờ lí thuyết, số giờ học lí thuyết của môn học.

 GioTH: Giờ thực hành, số giờ học thực hành của môn học.

Cấu trúc dữ liệu hỗ trợ quản lý thông tin môn học:

Trang 9

Số tín chỉ

Giờ lý thuyết

Giờ thực hành

Tự học

 Xuất danh sách môn học.

 Tìm thông tin môn học theo mã môn học (dùng hàm Liner Searrch).

 Tìm thông tin môn học theo mã mã môn học (dùng hàm Binary Search).

 Tìm thông tin môn học theo Tên môn học (dùng hàm Liner Searrch).

 Tìm thông tin môn học theo Tên môn học (dùng hàm Binary Searrch).

 Sắp xếp danh sách theo Mã môn học dùng hàm Shaker Sort.

 Sắp xếp danh sách theo Mã môn học dùng hàm Selection Sort.

 Sắp xếp danh sách theo Tên môn học dùng hàm Interchange Sort

 Sắp xếp danh sách theo Mã môn học dùng hàm Bubble Sort.

 Sắp xếp danh sách theo Tên môn học dùng hàm Insertion Sort.

 Sắp xếp danh sách theo Tín chỉ dùng hàm Quick Sort.

 Sắp xếp danh sách theo Mã môn học dùng hàm Merge Sort.

Trang 10

Các chức năng trên danh sách liên kết

 Nhập danh sách môn học.

 Xuất danh sách môn học.

 Tìm thông tin môn học theo Mã môn học dùng hàm Liner Search.

 Tìm thông tin môn học theo Tên môn học dùng hàm Liner Search.

 Sắp xếp danh sách theo Mã môn học dùng hàm Selection Sort.

 Sắp xếp danh sách theo Tên môn học dùng hàm Interchange Sort.

 Sắp xếp danh sách theo Tín chỉ dùng hàm Bubbler Sort.

 Sắp xếp danh sách theo Tên môn học dùng hàm Insertion Sort.

 Sắp xếp danh sách theo Mã môn học dùng hàm Quick Sort.

Trang 11

CHƯƠNG II: TÌM KIẾM VÀ SẮP XẾP TRÊN MẢNG CẤU TRÚC

2.1 Nhập danh sách môn học

a) Chương trình con

Để nhập danh sách môn học, cần xây dựng hai chương trình con gồm:

 void nhap_o(MONHOC& a);: hỗ trợ nhập thông tin một môn học gồm mã môn học, tên môn học, tín chỉ, giờ lý thuyết, giờ thực hành, tự học

 void nhap_Mang(MONHOC [], a int n);: hỗ trợ nhập danh sách môn học

//Nh p ô cho thông tin môn h cậ ọ

void nhap_o(MONHOC& )a

{

cout << " Ma mon hoc:"; cin.getline( MaMH, 10);a

cout << " Ten mon hoc:"; cin.getline( TenMH, 10);a

cout << " So tin chi:"; cin >> a.SoTC;

cout << " Gio li thuyet:"; cin >> a.GioLT;

cout << " Gio thuc hanh:"; cin >> a.GioTH;

cout << " Tu hoc:"; cin >> a.Tuhoc;

cin.ignore();

}

//Nh p Thông tin môn h cậ ọ

void nhap_Mang(MONHOC a[], int )n

Trang 12

 void xuat_Mang(MONHOC [], a int n);

//Xu t ô cho thông tin môn h cấ ọ

void xuat_o(MONHOC )a

Hình 2 1 Kết quả thông tin môn học

Trang 13

cout << " Ma mon hoc:" << MaMH a << endl;cout << " Ten mon hoc:" << TenMH a << endl;cout << " So tin chi:" << SoTC a << endl;

cout << " Gio li thuyet:" << a.GioLT << endl;cout << " Gio thuc hanh:" << GioTH a << endl;cout << " Tu hoc:" << a.Tuhoc << endl;

}

//Xu t thông tin môn h cấ ọ

void xuat_Mang(MONHOC a[], int )n

Trang 15

//Tìm kiếm MaMH bằng linersearch

int i = LinearSearch(dsmh, spt, MaMH);

Trang 16

 int BinarySearch(MONHOC [], a int n, char x[]): Tìm kiếm thông tin môn học theo MaMH.

//Hàm tìm ki m BinarySearch theo MAMHế

int BinarySearch(MONHOC a[], int , n char x[])

{

int left = 0;

int right = - 1;n

int mid = (left + right) / 2;

while (left <= right && strcmp( [mid].MaMH, ) != 0)a x{

if (strcmp( , [mid].MaMH) < 0) right = mid - 1;x aelse left = mid + 1;

mid = (left + right) / 2;

//Tìm Kiếm MaMH bằng BinarySearch

int j = BinarySearch(dsmh, spt, MaMH);

if (j >= 0)

Trang 17

//Hàm LinerSearch theo tên môn h cọ

int LinerSearch2(MONHOC a[], int , n char x[])

Trang 18

//kiểm tra linearsearch 2

cout << "Nhap TenMH can tim:";

cin.getline(TenMH, 3);

int i = LinearSearch2(dsmh, spt, TenMH);

if (i >= 0){

cout << " ==========> Ket qua timkiem: <==========" << endl;

xuat_o(dsmh[i]);

}else cout << " ==========> Khong co thong tin <==========" << endl;

}

g) Kết quả chạy

Hình 2 5 Tìm kiếm tên môn học bằng Liner Search

Trang 19

2.6 Tìm kiếm thông tin môn học theo Tên dùng Binary Search

a) Chương trình con

 int BinarySearch2(MONHOC a[], int n, char x[]): Tìm kiếm thông tin môn học theo tên

//Hàm BinarySearch theo tên môn h cọ

int BinarySearch2(MONHOC [], a int n, char x[])

{

int l = 0; int r = - 1; n int mid = (l + r) / 2; while (l <= r && strcmp( [mid].TenMH, ) != 0)a x {

Trang 20

//Tìm kiếm bằng BinarySearch theo Tên môn học

int k = BinarySearch2(dsmh, spt, TenMH);

2.8 Sắp xếp danh sách theo MaMH dùng hàm Shaker Sort

Hình 2 6 Tìm kiếm tên môn học bằng Binary Search

Trang 21

cout << " Ma mon hoc:" << .MaMH a << endl; cout << " Ten mon hoc:" << .TenMH a << endl; cout << " So tin chi:" << .SoTC a << endl;

cout << " Gio li thuyet:" << a GioLT << endl; cout << " Gio thuc hanh:" << .GioTH a << endl; cout << " Tu hoc:" << a Tuhoc << endl;

}

//Xu t thông tin môn h c ấ ọ

0 0

Trang 22

void xuat_Mang( MONHOC a [], int ) n

Trang 25

//Tìm kiếm MaMH bằng linersearch

int i = LinearSearch(dsmh, spt, MaMH);

Trang 27

int BinarySearch( MONHOC a [], int , n char x [])

{

int left = 0;

int right = - 1; n

int mid = (left + right) / 2;

while (left <= right && strcmp( [mid].MaMH, ) != 0) a x {

if (strcmp( , [mid].MaMH) < 0) right = mid - 1; x a else left = mid + 1;

mid = (left + right) / 2;

//Tìm Kiếm MaMH bằng BinarySearch

int j = BinarySearch(dsmh, spt, MaMH);

if (j >= 0)

0 0

Trang 29

2.5 Tìm kiếm thông tin môn học theo Tên dùng Liner Search

a) Chương trình con

 int LinerSearch2( MONHOC [], a int n , char x []): Tìm kiếm thông tin môn học theo tên.

//Hàm LinerSearch theo tên môn h c ọ

int LinerSearch2( MONHOC a [], int , n char x [])

Trang 30

//kiểm tra linearsearch 2

cout << "Nhap TenMH can tim:";

cin.getline(TenMH, 3);

int i = LinearSearch2(dsmh, spt, TenMH);

if (i >= 0) {

cout << " ==========> Ket qua tim kiem: <==========" << endl;

xuat_o(dsmh[i]);

}

else cout << " > Khong co

0 0

Trang 31

else cout << " ==========> Khong co thong tin <==========" << endl;

}

g) Kết quả chạy

Hình 2 5 Tìm kiếm tên môn học bằng Liner Search

0 0

Trang 32

2.6 Tìm kiếm thông tin môn học theo Tên dùng Binary Search

a) Chương trình con

 int BinarySearch2( MONHOC a [], int n , char x []): Tìm kiếm thông tin môn học theo tên

//Hàm BinarySearch theo tên môn h c ọ

int BinarySearch2( MONHOC [], a int n , char x [])

Trang 33

//Tìm kiếm bằng BinarySearch theo Tên môn học

int k = BinarySearch2(dsmh, spt, TenMH);

Trang 34

2.8 Sắp xếp danh sách theo MaMH dùng hàm Shaker Sort

Hình 2 6 Tìm kiếm tên môn học bằng Binary Search

0 0

Trang 35

a) Chương trình con

 void ShakerSort( MONHOC a [], int n ): Sắp xếp thông tin môn học theo MaMH.

//S p x p danh sách theo MaMH b ng ShakerSort ắ ế ằ

void ShakerSort( MONHOC a [], int ) n

hoanvi( a [i - 1], a [i]);

k = i;

}

0 0

Trang 36

} left = k;

for int ( j = left; j < right; j++)

if (strcmp( [j].MaMH, [j + 1].MaMH) > 0) a a {

hoanvi( a [j], [j + 1]); a

k = j;

} right = k;

j) Kiểm tra (hàm Main kiểm tra ctc)

int Main()

{

//Kiểm tra Shaker Sort

0 0

Trang 37

cout << "\n" ; cout << "\n ==========> Shaker Sort - Sap xep thong tin mon hoc theo Ma mon hoc

//S p x p danh sách theo MaMH b ng SelectionSort ắ ế ằ

Hình 2 7 Sắp xếp mã môn học bằng Shaker Sort

0 0

Trang 38

//S p x p danh sách theo MaMH b ng SelectionSort ắ ế ằ

void SelectionSort( MONHOC a [], int ) n

Trang 40

2.10 Sắp xếp danh sách theo Tên dùng hàm Interchange Sort

a) Chương trình con

 void InterchangeSort( MONHOC [], a int n ): Sắp xếp thông tin môn học theo tên.

//S p x p danh sách theo Tên b ng InterchangeSort ắ ế ằ

void InterchangeSort( MONHOC a [], int ) n

Trang 42

/S p x p danh sách theo mã môn h c b ng BubbleSort ắ ế ọ ằ

void BubbleSort( MONHOC [], a int n )

{

for ( int i = 0; i < - 1; i++) n

Hình 2 9 Sắp xếp tên môn học bằng Interchange Sort

0 0

Trang 43

for ( int j = -1; j > i; j ) n

if ( [j].MaMH < [j - 1].MaMH) a a hoanvi( [j], [j - 1]); a a }

b) Kiểm tra (hàm Main kiểm tra ctc)

Trang 44

BubbleSort(dsmh, spt);

cout << "\n Danh sach da duoc sap xep";

cout << "\n" ; xuat_mang(dsmh, spt);

//S p x p danh sách theo ĐTB b ng InsertionSort ắ ế ằ

void InsertionSort( MONHOC a [], int ) n

Hình 2 10 Sắp xếp mã môn học bằng Bubble Sort

0 0

Trang 46

while ((pos >= 0) && [pos].TenMH > x.TenMH) a {

<==========";

InsertionSort(dsmh, spt);

cout << "\n Danh sach da duoc sap xep";

0 0

Ngày đăng: 11/08/2022, 10:04

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w