BAI BAO CAO CUOI KY Bài 1: Viết chương trình tạo một menu danh sách liên kết đơn để quản lý danh sách sinh viên thực hiện các công việc sau:... 1 Tạo danh sách sinh viên, quá trình nhập
Trang 1
DAI HOC DA NANG
TRUONG PAI HOC SU PHAM KY THUAT
Sinh viên thực hiện: Nguyễn Hữu Dịnh MSV: 23115053122305
Trang 2
Đà Nẵng, tháng 12 năm 2024
Trang 3MỤC LỤC
BÀI BẢO CÁO CUỒI KỲ 5:-22222:2222111222211112121111212111120011112.0111121012 1 re 1 Bai 1: Viét chương trình tạo một menu danh sách liên kết đơn đề quản lý danh sách sinh
hàm Insert_First, Insert_After, Insert_ Last cho phù hợp (2c co 17
5) Xóa | sinh vién: dya vào vị trí nhập (tuong ty nhu thém) 00.000 ee 22
7) Sắp XÊp theo mã sinh viên tăng dần và giảm dần khi thông báo người dùng chọn I8 ;1 080 a‹ä 26
Bài 2: Viết chương trình cài đặt các phương pháp sắp xếp Shell Sort, Heap Sort, Merge Sort áp dụng cho mảng các sô nguyên được nhập từ bàn phím cc co 5553552 28 1) Shell SOYí L2 1 2 222111 11112115 111111150115 1115511511111 key 36
"no ‹4diiI 37 Sa he 38 Bài 3: Viết lại chương trỉnh ở bài l với đữ liệu của mảng được nhập từ file t exf Input.fxt, xuat đữ liệu đã sắp xếp ra l file text oufput.fX 2 0 1 2112 HH HH He 39
IS 1 54 2) OUtPUEAXL -.4 54
Trang 4BAI BAO CAO CUOI KY
Bài 1: Viết chương trình tạo một menu danh sách liên kết đơn để quản lý danh sách sinh viên thực hiện các công việc sau:
Trang 5NUT *Insert_First(NUT *H, SinhVien 5V) { NUT *p = Tao_Nut(SV);
Trang 7NUT *tam =H;
while (tam != NULL) {
printf(" | %12d | %ti18s | %ti5s | %.2f |\n", tamti>sv.MaSV, tamti>sv.TenSV, tamti>sv.Lop, tamti>sv.DCK);
Trang 9if (tam != NULL && tamti>tiep != NULL) {
NUT *nutXoa = tamti>tiep;
tamti>tiep = nutXoati>tiep;
free(nutXoa);
Trang 10printf("Da xoa sinh vien sau vi tri %d\n", pos);
if (tam != NULL && tamti>tiep != NULL) {
NUT *nutXoa = tamti>tiep;
Trang 11printf("Tim thay sinh vien:\n");
printf("Ma SV: %d\nTen SV: %s\nLop: %s\nDCK: %.2f\n", tamti>sv.MasvV, tamti>sv.TenSV, tamti>sv.Lop, tamti>sv.DCK);
Trang 12NUT *SapXep(NUT *H, int tangDan) {
if (H == NULL || Hti>tiep == NULL) {
return H;
}
for (NUT *i =H; iti>tiep != NULL; i = iti>tiep) {
for (NUT *j = iti>tiep; j != NULL; j = jti>tiep) {
if ((tangDan && iti>sv.MaSV > jti>sv.MaSV) | | (!tangDan && iti>sv.MaSV < jti
Trang 13printf("\n5 Xoa sinh vien");
printf("\nó Tim kiem sinh vien theo ma"); printf("\n7 Sap xep danh sach");
printf("\n8 Xoa toan bo danh sach"); printf("\n9 Thoat chuong trinh");
Trang 14getchar(); // Xoa bo nho dem
fgets(sv.TenSV, sizeof(sv.TenSV), stdin); sv.TenSV[strcspn(sv.TenSV, "\n")] = '\0'; printf("Nhap lop: ");
fgets(sv.Lop, sizeof(sv.Lop), stdin); sv.Lop[strcspn(sv.Lop, "\n")] = '\O'; printf("Nhap diem cuoi ky: ");
getchar(); // Xoa bo nho dem
fgets(sv.TenSV, sizeof(sv.TenSV), stdin); sv.TenSV[strcspn(sv.TenSV, "\n")] = '\0';
Trang 15printf("Nhap vi tri can them (1 la dau danh sach, 2 la them vao sau vi tri
nhap tu ban phim, 3 la them vao cuoi danh sach): ");
Trang 16printf("Nhap ten moi: ");
getchar(); // Xoa bo nho dem
fgets(tenMoi, sizeof(tenMoi), stdin);
Trang 18printf("Chon cach sap xep (1: Tang dan, 0: Giam dan): "); scanf("%d", &tangDan);
Trang 191) Tạo danh sách sinh viên, quá trình nhập sẽ dừng lại khi nhập mã sinh viên= 0Ú
Tao danh sach sinh vien
Them sinh vien vao danh sach
5 Xoa sinh vien
9 Thoat chuong trinh
MaSV (nhap 0 de dung): 2305
ten SV: Huu Dinh
Trang 202) Thêm sinh viên vào danh sách với vị trí nhập vào: dựa vào vị trí đã nhập, gọi cac ham Insert_First, Insert_After, Insert_Last cho phù hợp
Thém dau:
1 Tao danh sach sinh vie
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap MaSV: 123
Nhap ten SV: Khang
Nhap Lop: 12
Nhap diem cuoi ky: 5
Nhap vi tri can them (1 La dau danh sach, 2 La them vao sau vi tri nhap tu ban phim, 3 La them vao cuoi danh sach): 1
1 Tao danh sach sinh vie
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap lua chon: 3
Trang 21Thém sau vị trí nhập từ bàn phím:
1 Tao danh sach sinh vie
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap lua chon: 2
Nhap MaSV: 125
Nhap ten SV: Tan
Nhap lop: 12t3
Nhap diem cuoi ky: 5
Nhap vi tri can them (1 la dau danh sach, 2 la them vao sau vi tri nhap tu ban phim, 3 la them vao cuoi danh sach): 2 Nhap vi tri can them vao sau: 2
= === MENU ==:
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap lua chon: 3
Trang 22Thêm cuôi:
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
Thoat chuong trinh
Nhap diem cuoi ky: 2
Nhap vi tri can them (1 La dau danh sach, 2 La them vao sau vi tri nhap tu ban phim, 3 La them vao cuoi danh sach): 3
===: = MEN
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Trang 233) Xem danh sách sinh viên, trình bày dưới dạng các cột
===- RE ===E======
Tao danh sach sinh vien
Them sinh vien vao danh sach
Xem danh sach sinh vien
Sua ten sinh vien
Xoa sinh vien
Tim kiem sinh vien theo ma
Sap xep danh sach
Xoa toan bo danh sach
Thoat chuong trinh
Nhap Lua chon: 3
Trang 24
4) Sửa lại Tên sinh viên khi nhập vào vị trí cần chính sửa
=== -_
Tao danh sach sinh vien
Them sinh vien vao danh sach
Xem danh sach sinh vien
Sua ten sinh vien
Xoa sinh vien
Tim kiem sinh vien theo ma
Sap xep danh sach
Xoa toan bo danh sach
Thoat chuong trinh
Nhap lua chon: 4
Nhap vi tri sinh vien can sua: 1
Nhap ten moi: Tho Khang
Da cap nhat ten sinh vien
_—————
Tao danh sach sinh vien
Them sinh vien vao danh sach
Xem danh sach sinh vien
Sua ten sinh vien
Xoa sinh vien
Tim kiem sinh vien theo ma
Sap xep danh sach
Xoa toan bo danh sach
Thoat chuong trinh
Trang 255) X6a 1 sinh viên: dựa vào vị trí nhập (tương tự như thêm)
Xóa đầu(Xóa Khang):
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap lua chon: 5
Da xoa sinh vien o vi tri dau danh sach
a |(,|3'[Í =—= —=-_—=—
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Trang 26Xóa sau vị trí nhập từ bàn phím(Xóa Tân):
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim hiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap tua chon: 5
Chon thao tac xoa (1: Xoa dau danh sach, 2: Xoa sau vỉ tri, 3: Xoa cuoi danh sach): 2 Nhap vi tri sinh vien ma ban muon xoa sau: 1
Da xoa sinh vien sau vi tri 1
==== MENU ==
- Tao danh sach sinh vien
Them sinh vien vao danh sach
Xem danh sach sinh vien
Sua ten sinh vien
Xoa sinh vien
Tim kiem sinh vien theo ma
Sap xep danh sach
Xoa toan bo danh sach
Thoat chuong trinh
Nhap lua chon: 3
Trang 27Xóa cuối(Xóa Nhân):
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap lua chon: 5
Chon thao tac xoa (1: Xoa dau danh sach, 2: Xoa sau vi tri, 3: Xoa cuoi danh sach): 3
Da xoa sinh vien o vi tri cuoi danh sach
========== MENU ==
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6
7
9
- Tim kiem sinh vien theo ma
Sap xep danh sach
Xoa toan bo danh sach
Thoat chuong trinh
Nhap tua chon: 3
Trang 286) Tìm kiêm 1 sinh viên theo mã sinh viên
Tao danh sach sinh vien
Them sinh vien vao danh sach
danh sach sinh vien
ten sinh vien
sinh vien
kiem sinh vien theo ma
xep danh sach
toan bo danh sach
Thoat chuong trinh
Nhap Lua chon: 3
Tao danh sach sinh vien
Them sinh vien vao danh sach
danh sach sinh vien
ten sinh vien
sinh vien
kiem sinh vien theo ma
xep danh sach
toan bo danh sach
Thoat chuong trinh
Nhap lua chon: 6
Nhap ma sinh vien can tim: 2305
Tim thay sinh vien:
Trang 297) Sắp xếp theo mã sinh viên tăng dần và giảm dần khi thông báo người dùng chọn lựa cách sắp xếp
Tao danh sach sinh vien
Them sinh vien vao danh
danh sach sinh vien
ten sinh vien
sinh vien
kiem sinh vien theo ma
xep danh sach
toan bo danh sach
Thoat chuong trinh
Nhap Lua chon: 7
sach
Chon cach sap xep (1: Tang dan, 0: Giam dan): 1
Da sap xep danh sach
Tao danh sach sinh vien
Them sinh vien vao danh sach
danh sach sinh vien
ten sinh vien
sinh vien
kiem sinh vien theo ma
xep danh sach
toan bo danh sach
Thoat chuong trinh
Nhap lua chon: 3
| Ma sinh vien | Ten sinh vien | Lop | DCK |
Trang 30Tao danh sach sinh vien
Them sinh vien vao danh sach
danh sach sinh vien
ten sinh vien
kiem sinh vien theo ma
xep danh sach
toan bo danh sach
Thoat chuong trinh
Nhap lua chon: 7
Chon cach sap xep (1: Tang
Da sap xep danh sach
Tao danh sach sinh vien
Them sinh vien vao danh sach
danh sach sinh vien
ten sinh vien
kiem sinh vien theo ma
xep danh sach
toan bo danh sach
Thoat chuong trinh
Nhap Lua chon: 3
dan, 9: Giam dan): 9
| Ma sinh vien | Ten sinh vien | Lop | DCH
Trang 318) Xóa toàn bộ danh sách
Tao danh sach sinh vien
Them sinh vien vao danh sach
Xem danh sach sinh vien
Sua ten sinh vien
Xoa sinh vien
Tim kiem sinh vien theo ma
Sap xep danh sach
Xoa toan bo danh sach
Thoat chuong trinh
Nhap tua chon: 1
Nhap MaSV (nhap © de dung): 131
Nhap ten SV: Ta
Nhap lop: 123
Nhap diem cuoi ky: 213
Nhap MaSV (nhap © de dung): 0
= A
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap lua chon: 8
Da xoa toan bo danh sach
|
1 Tao danh sach sinh vien
2 Them sinh vien vao danh sach
3 Xem danh sach sinh vien
4 Sua ten sinh vien
5 Xoa sinh vien
6 Tim kiem sinh vien theo ma
7 Sap xep danh sach
8 Xoa toan bo danh sach
9 Thoat chuong trinh
Nhap lua chon: 3
Danh sach rong
Bài 2: Viết chương trình cài đặt các phương pháp sắp xếp Shell Sort, Heap Sort, Merge Sort 4p dung cho máng các số nguyên được nhập từ bàn phím
Bài Làm
#include<stdio.h>
void inputArray(int arr[], int *size) {
Trang 32printf("Nhap so luong phan tu: ");
scanf("%d", size);
for (int i = 0; i < *size; i++) {
printf("Nhap phan tu thu %d: ", i + 1); scanf("%d", &arr[i]);
void printArray(int arr[], int size) {
printf("Danh sach la:\n");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
void shellSort(int arr[], int size) {
int gap = size / 2;
while (gap > 0) {
for (int i = gap; i < size; i++) {
int temp = arr[i];
int j =i;
while (j >= gap && arr[j tf gap] > temp) {
arr[j] = arr[j tf gap];
Trang 33j tf= gap;
arr[j] = temp;
gap /= 2;
void merge(int arr[], int left, int mid, int right) {
int ni = mid tf left + 1;
int n2 = right tf mid;
int leftArr[n1], rightArr[n2];
for (int i = 0; i < n1; i++) {
leftArr[i] = arr[left + i];
Trang 35mergeSort(arr, mid + 1, right); merge(arr, left, mid, right);
void swap(int *a, int *b) {
int temp = *a;
+4 = *b;
*b =temp;
void heapify(int arr[], int size, int root) {
int largest = root;
int left = 2 * root + 1;
int right = 2 * root + 2;
if (left < size && arr[left] > arr[largest]) {
Trang 36void heapSort(int arr[], int size) {
for (int i = size / 2 tf 1; i >=; itftf) {
heapify(arr, size, i);
printf("2 In danh sach\n");
printf("3 Shell Sort\n");
printf("4 Heap Sort\n");
printf("5 Merge Sort\n");
printf("6 Thoat chuong trinh\n");
Trang 37printf("tftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftftf` printf("Nhap lua chon: ");
Trang 39Nhap Lua chon: 1
Nhap so Luong phan tu: 5
Nhap phan tu thu 1:
Nhap phan tu thu 2:
Nhap phan tu thu 3:
Nhap phan tu thu 4:
Nhap phan tu thu 5: WNOA
Nhap Lua chon: 3
Danh sach da sap xep (Shell Sort):
Danh sach la:
12356