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

69 2 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 69
Dung lượng 1 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

BÀI TẬP ĐỒ ÁN CẤU TRÚC

DỮ LIỆU VÀ GIẢI THUẬT

Giảng viên hướng dẫn: Nguyễn Quốc Thanh

Môn học thực hiện: Nguyễn Xuân Tính

Mã số môn học: 2121001038

Mã lớp học phần: 2121112001202

TIEU LUAN MOI download : skknchat123@gmail.com

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ột môitrường học tập mới , thầy cô luôn quan tâm chúng em hỏi chúng em không hiểuchỗ 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!

TIEU LUAN MOI download : skknchat123@gmail.com

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

TIEU LUAN MOI download : skknchat123@gmail.com

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

TIEU LUAN MOI download : skknchat123@gmail.com

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

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 6

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

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

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

TIEU LUAN MOI download : skknchat123@gmail.com

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

TIEU LUAN MOI download : skknchat123@gmail.com

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ựchà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

float GioTH;

float Tuhoc;

};

1.3 Dữ liệu mẫu

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

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 10

Các chức năng trên danh sách liên kếtNhậ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

TIEU LUAN MOI download : skknchat123@gmail.com

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ọcgồ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ônhọc

//Nh ập ô cho thông tin môn họcvoid nhap_o(MONHOC& a)

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

Ten mon hoc:"; cin.getline(a.TenMH, 10); cout << " So tinchi:"; 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ọcvoid nhap_Mang(MONHOC a[], int n){

for (int i = 0; i < n; i++){

cout << "\n Nhap sinh vien thu " << i << ":" <<

Trang 12

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

void Main(){

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

//Xu ất ô cho thông tin môn họcvoid xuat_o(MONHOC a)

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 13

{cout << " Ma mon hoc:" << a.MaMH << endl; cout << "

Ten mon hoc:" << a.TenMH << endl; cout << " So tin chi:" << a.SoTC << endl; cout << " Gio li thuyet:" <<

a.GioLT << endl; cout << " Gio thuc hanh:" << a.GioTH

<< endl; cout << " Tu hoc:" << a.Tuhoc << endl;

}//Xu ất thông tin môn họcvoid xuat_Mang(MONHOC a[], int n){

cout << " ==========> Danh sach mon hoc:

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

void Main(){

Trang 14

c) Kết quả chạy

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

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

a) Chương trình con

int LinerSearch(MONHOC a[], int n, char x[]):

Tìm kiếm thông tin môn học theo MaMH

//Dùng LinearSearch để tìm mã môn họcint LinearSearch(MONHOC a[], int n, char x[]){

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

if (strcmp(a[i].MaMH, x) == 0)return i;

return -1;

}

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

void Main(){

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 15

cout << "\n ==========> Ket qua tim kiem ma mon hoc bang LinerSearch: <==========\n ";

xuat_o(dsmh[i]);

}else

cout << "\n ==========> Khong co thong tin

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

}

b) Kết quả chạy

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

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

a) Chương trình con

TIEU LUAN MOI download : skknchat123@gmail.com

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 MAMHint BinarySearch(MONHOC a[], int n, char x[]){

int left = 0;

int right = n - 1;

int mid = (left + right) / 2;

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

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

else left = mid + 1;

mid = (left + right) / 2;

Trang 17

cout << "\n ==========> Khong co thong tin

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

}

e) Kết quả chạy

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

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ọcint LinerSearch2(MONHOC a[], int n, char x[]){

int i = 0;

while (strcmp(a[i].TenMH, x) != 0 &&

strcmp(a[n - i].TenMH, x) != 0 && i < n / 2) i++;

if (strcmp(a[i].TenMH, x) == 0)return i;

if (strcmp(a[n - i].TenMH, x) == 0)return (n - i);

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 18

return (-1);

}

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

void Main(){

//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 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

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 19

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

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

= 0){

Trang 20

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 21

//Tìm kiếm bằng BinarySearch theo Tên môn học int k =BinarySearch2(dsmh, spt, TenMH); if (k >= 0)

cout << "\nKhong co thong tin";

MONHOC temp = a;a

= b;

b = temp;

}

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

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 22

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

a GioLT << endl; cout << " Gio thuc hanh:" << a GioTH

<< endl; cout << " Tu hoc:" << a Tuhoc << endl;

}

Trang 23

TIEU LUAN//Xu ấMOItthôngdownloadtinmônh

ọ:cskknchat123@gmail.com

Trang 24

void xuat_Mang(MONHOC a [], int n ) {

cout << " ==========> Danh sach mon hoc:

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

void Main() {

Trang 25

c) Kết quả chạy

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

a) Chương trình con

int LinerSearch(MONHOC a [], int n , char x []): Tìm

TIEU LUANkiếmthôngMOItin downloadmônhọctheoMaMH:skknchat123@gmail..com

Trang 26

//Dùng LinearSearch để tìm mã môn học int LinearSearch(MONHOC a [], int n , char x []) {

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

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 27

cout << "\n ==========> Ket qua tim kiem ma mon hoc bang LinerSearch: <==========\n ";

xuat_o(dsmh[i]);

} else

cout << "\n ==========> Khong co thong tin

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

}

b) Kết quả chạy

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

TIEU LUAN MOI download : skknchat123@gmail.com

a) Chương trình con

Trang 28

a) Chương trình con

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

TIEU LUAN//HàmMOItìm

kidownloadếmBinarySearch:skknchat123@gmailtheoMAMH.com

Trang 29

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

int left = 0;

int right = n - 1;

int mid = (left + right) / 2;

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

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

else left = mid + 1;

mid = (left + right) / 2;

Trang 30

cout << "\n ==========> Khong co thong tin

Trang 31

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

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

int i = 0;

while (strcmp( a [i].TenMH, x ) != 0 &&

strcmp( a [ n - i].TenMH, x ) != 0 && i < n / 2) i++;

if (strcmp( a [i].TenMH, x ) == 0) return i;

if (strcmp( a [ n - i].TenMH, x ) == 0) return ( n - i);

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 32

return (-1);

}

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

void Main() {

//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]);

}

TIEU LUAN MOI download : skknchat123@gmail.com

else cout << " > Khong co

Trang 33

else cout << " ==========> Khong cothong tin <==========" << endl;

}

TIEU LUAN MOI download : skknchat123@gmail.com

Trang 34

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 = n - 1; int mid = (l + r) / 2; while (l <= r &&

strcmp( a [mid].TenMH, x ) != 0) {

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

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