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

bài tập đồ án cấu trúc dữ liệu và giải thuật

61 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Bài tập đồ án Cấu trúc dữ liệu và giải thuật
Tác giả Nguyễn Xuân Tới, Mai Lộc
Người hướng dẫn ThS. Nguyễn Quốc Thanh
Trường học Trường Đại học Tài chính - Marketing
Chuyên ngành Công nghệ thông tin
Thể loại bài tập đồ án
Năm xuất bản 2022
Định dạng
Số trang 61
Dung lượng 2,48 MB

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ỉ SoT

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

LOI CAM ON

Đầu tiên, em xin chân thành cảm ơn va 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ông nghệ thông tin và thầy Nguyễn Quốc Thanh đã dạy dỗ tận tình cho chúng em nhữ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ôi trường học tập mới , thay cô luôn quan tâm chúng em hỏi chúng em không hiểu chỗ nao thi 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 em ngà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 đữ 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

MUC LUC

CHUONG I: GIỚI THIỆU - -2- 2 22212251225112211221112211211111111211211121211211 2 re 1

L.1 GiGi thi@U GE Dai ceccccccccccceeceeseeeeeeeeeessseesseeneeesessnneeeeeeeseeeegneed 1

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

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

CHƯƠNG II: TIM KIEM VA SAP XEP TREN MANG CAU TRÚC - <2 4

2.1 Nhap danh Sach MON NOC cccccseceeecseeeeceeeeeeeeeeseeeetsaeeaeeeesseraneeees 4 A) CHUONG CHINN CONL cc eeccceeeeeeseeeeseeeeesesaesaeseeeaeneeesaeeseersnsseraneere 4

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

A) CHUONG CHINN CONL cc eeccceeeeeeseeeeseeeeesesaesaeseeeaeneeesaeeseersnsseraneere 7

2.4 Tim kiém théng tin m6n hoc theo ma mén hoc dung Binary

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

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

Trang 4

C) KOt QUA CHAY ce eeececcesccccceceeeececeeeceeeeeeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeneess 14

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

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

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

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

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

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

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

CHƯƠNG III: TÌM KIÊM VÀ SẮP XÉP TRÊN DSLK 2252222222212 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

Trang 5

b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 33

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

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

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

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

3.9 Sắp xếp thông tin môn học theo mã môn hoc bang

lnterchang€ SOFẨ nen nền nh nh TH Thế BH Kế TT ben TK bến tà th 48

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

Trang 6

Kiểm tra (hàm Main kiểm tra CC) che 55

J4{-i0ei0.Near PP 56 Sắp xếp thông tin môn học theo mã môn học bằng Quick

56

Kiểm tra (hàm Main kiểm tra CC) che 58

J4{-i0ei0.Near PP 60

Trang 7

DANH MUC BANG, HINH A Bang 1.1 DU QU MAU cccccceceecsceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeereeeeeeeeesaaaaas 2

Y

Hinh 2 1 K@t qua thdng tin MON NOC ccccceesteeeeeeessesseeeeeessesesesseeeeaaeeeaas 5

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

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

Hình 2 10 Sắp xếp mã môn học băng Bubble Sort che 21 Hình 2 11 Sắp xếp theo tên môn học bằng Insertion SOFẨ che reo 23 Hình 2 12 Sắp xep tin chi bang Ợ gHơ7ơở7„„7Ừ7Ừýy,d 25 Hình 2 13 Sắp xếp mã môn học bằng Merge SOF ch xe 30

Hình 3 1 Kết quả nhập thông tin môn học vào DSLK ‹ccccccccc‡cc+‡‡ccs+c: 35 Hình 3 2 Kết quả xuất danh sách môn học ra mản hình :++:c++++:::: 38 Hình 3 3 Đém số lượng môn học có trong danh sách ‹cccccc‡‡‡ccxx‡+++: 40 Hình 3 4 Tìm kiếm mã môn học có tron 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 7 Sắp xếp mã môn học bằng Interchange Sort eerie 51

Hình 3 9 Sắp xếp m4 mon hoc bang Insertion Sort ccccccscccssceessssseseessssseesanees 56 Hình 3 10 Sắp xếp mã môn học bằng Quick Sort cccccccccccsssssssssessseeseeeeaeeeeess 60

Trang 8

CHUONG I: GIOI THIEU

11 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ấm 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:

ký tự

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 tín môn học theo mã môn học (dùng hàm Liner Searrch)

Tìm thông tín môn học theo mã mã môn học (dùng hàm Binary Search)

Tìm thông tín môn học theo Tén m6n hoc (dung ham Liner Searrch)

Tìm thông tín môn hoc theo Tén m6n hoc (dung ham 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 đanh sách theo Mã môn hoc ding ham Selection Sort

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

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

Sap xép danh sach theo Tén mén hoc ding ham 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 ham Merge Sort

Trang 10

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

U

U

U

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

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

Tìm thông tín môn học theo Mã môn học dùng hàm Liner Search Tìm thông tín môn học theo Tên môn học dùng hàm Liner Search Sắp xếp đanh sách theo Mã môn hoc ding ham Selection Sort Sắp xếp đanh sách theo Tên môn học dùng hàm Interchange Sort Sắp xếp đanh sách theo Tín chỉ dùng hàm Bubbler Sort Sap xép danh sach theo Tén mén hoc ding ham Insertion Sort Sắp xếp đanh sách theo Mã mén hoc ding ham Quick Sort.

Trang 11

CHUONG II: TIM KIEM VA SAP XEP TREN MANG CAU TRUC

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:

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

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();

}

//Nhap Théng tin môn học

void nhhap_Mang(MONHOC a[], int n)

Trang 12

0 void xuat_o(MONHOC a);: hỗ trợ xuất một thông tin môn học

gồm: mã môn học, tên môn học, số tín chỉ, giờ lý thuyết, giờ thực hành, tự

học

//Xuât ô cho thông tin môn hoc

void xuat_o(MONHOC a)

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ọc

void xuat_Mang(MIONHOC a[], int n)

Trang 14

c) Két qua chay

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

kiém thông tin môn học theo MaMH

Trang 15

/Tìm kiếm MaMH bang linersearch

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

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

2.4 Tim kiém thong tin mon hoc theo ma mén hoc dung Binary Search a) Chương trình con

Trang 16

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

kiém thông tin môn học theo MaMH

//Ham tim kiếm BinarySearch theo MAMH

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 (strcemp(x, a[mid].MaMH) < 0) right = mid - 1;

else left = mid + 1;

mid = (left + right) / 2;

/[Tim Kiém MaMH bang BinarySearch

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

if j >= 0)

Trang 17

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

2.35 Tim kiêm thong tin mon hoc theo Tên dùng Limer Search

Chirong trinh con

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

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 20

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

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

Trang 21

a) Chương trình con

hoc theo MaMH

//Sắp xếp danh sách theo MaMH bang ShakerSort

void ShakerSort(MONHOC af], int n)

for (int i = right; i > left; i )

if (strcmp(a[i - 1].MaMH, a[i].MaMH) > 0)

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

k=i;

}

left = k;

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

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

Trang 22

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

2.9 Sắp xếp danh sách theo MaMH ding ham Selection Sort

a) Chương trình con

0 void SelectionSort(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 SelectionSort

void SelectionSort(MONHOC a[], int n)

{

int min;

Trang 23

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

Trang 24

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

a) Chương trình con

tin m6n hoc theo tén

//Sắp xếp danh sách theo Tên bang InterchangeSort

void TnterchangeSort(MONHOC a[], int n)

InterchangeSort(dsmh, spt);

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

cout << "\n";

Trang 25

xuat_mang(dsmh, spt);

}

c) Két qua chay

„ „ Hình 2.9 Sắp xếp tên môn hoc bang Interchange Sort

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

a) Chương trình con

học theo mã môn học

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

void BubbleSort(MONHOC a[], int n)

Trang 26

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

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

a) Chương trình con

môn học theo tên

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

void InsertionSort(MONHOC a[], int n)

Trang 27

InsertionSort(dsmh, spt);

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

Trang 28

Hinh 2 11 Sap xép theo tén mén hoc bang Insertion Sort

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

a) Chương trình con

tin môn học theo tín chỉ

theo tín chỉ để xuất ra màn hình

//Sắp xếp học bổng bằng QuickSort

void QuickSort(MONHOC a[], int left, int right)

{

int i = left, j = right;

MONHOC = a[(left + right) / 2];

do

{

while (a[i].SoTC < x.SOTC) i++;

while (a[j].SoTC > x.SOTC) j ;

Trang 29

if (left < j) QuickSort(a, left, j);

if (i < right) QuickSort(a, i,right);

}

// ham phụ của QuickSort

void QuickSortl(MONHOC af], int n)

Trang 30

2.14 Sap xép danh sach thea MAMH ding ham Merge Sort

Chirong trinh con

int k): chương trình con hỗ trợ phân phối mảng phụ giải thuật Merge Sort

trình con hỗ trợ trộn 2 mảng phụ

nang cao — Merge Sort

Trang 31

// Khai bao cau tric quan li

Trang 32

kc = min(k, nc); // Dung ctc min de ho tro cho ham

Trang 33

/IMergeSort - Sắp xếp môn học theo mã

void MergeSort(MONHOC hd], int n)

Trang 35

Nguyễn Xuân Tỉnh - 2121001038

CHUONG III: TIM KIEM VA SAP XEP TREN DSLK

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

/J Định nghĩa cấu trúc quản lí danh sách môn học typedef struct

Trang 37

Nguyễn Xuân Tỉnh - 2121001038

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

a) Chương trình con

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

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

//Nhap sé tin chi

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

//Nhap tin chi học lí thuyết

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

//Nhập tín chỉ học thực hành

cout << "Gio thuc hanh:"; cin >> mh.GioTH; //Nhập tín chỉ tự học

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

b) Kiém tra (ham Main kiém tra ctc)

Trang 38

//hdéi nhập tiếp hay không

cout << "\n Nhap tiep hay khong (C/K) ?"; cin >> U;

Trang 39

Nguyễn Xuân Tỉnh - 2121001038

a)

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

Chirong trinh con

/ Xuất danh sách liên kết

/J Xuất thông tin

Trang 41

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

3.4 Đớm số phần từ có trong danh sách thông tìn môn học

a) Chuong trinh con

Trang 43

Nguyễn Xuân Tỉnh - 2121001038

/hỏi nhập tiếp hay không

cout << "\n Nhap tiep hay khong (C/K) ?";

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

3.5 Tim kiếm thong tin mon hoc theo ma mén hoc bang Liner Search a) Chương trình con

Tim kiém thông tin môn học bằng MaMH

/[Tim kiém théng tin mén hoc theo ma mén hoc

(Linearsearch)

mhnodelype* FindList_MaMH(dsmh_List* |, char M[])

{

43

Trang 45

Nguyễn Xuân Tỉnh - 2121001038

/Thêm thông tin môn học vào cuối danh sách

add_last(ds, n);

//hdéi nhập tiếp hay không

cout << "\n Nhap tiep hay khong (C/K) ?"; cin >> U;

cin.ignore();

// In danh sách thông tin môn học

cout << "\t \t \t ==========> Danh sach thong tin

mon hoc <========== "<< endl:

Ngày đăng: 02/07/2024, 17:27

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

TÀI LIỆU LIÊN QUAN

w