Xây dựng từ điển anh việt và ngược lại

20 75 0
Xây dựng từ điển anh việt và ngược lại

Đ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

Trường đại học Bách Khoa Hà Nội Bài tập lớn môn học KTLT LỜI MỞ ĐẦU Tin học ngành khoa học mũi nhọn phát triển nhanh chóng vài chục năm trở lại ngày mở rộng lĩnh vực nghiên cứu, ứng dụng mặt đời sống xã hội Mà tất phần mềm hữu dụng phục vụ công việc thường ngày người Ngày nay, sản phẩm phần mềm đời nhằm cung cấp chương trình ứng dụng thực thiết bị điện tử máy tính, điều khiển,… Điều thực để đơn giản hoá cơng đoạn hệ thống cơng việc Do bọn em chọn đề tài:” Xây dựng từ điển Anh-Việt ngược lại “ đề tài thiết thực cơng việc học tập, giúp e tự tạo từ điển nhỏ phục vụ cho việc học tập Nhóm Page Trường đại học Bách Khoa Hà Nội Bài tập lớn môn học KTLT I HƯỚNG LÀM BÀI TẬP Ý tưởng: - Do đề yêu cầu từ điển có từ, nghĩa từ, câu mẫu nên Chúng ta xây dựng sở liệu, sử dụng danh sách liên kết, node bao gồm từ nghĩa từ - Đồng thời, cần lưu lại sử dụng lại sở liệu nên ta cần phải lưu từ file txt để sử dụng - Do từ điển cần phải thêm- update từ, có nhu cầu xóa, nên ta xây dựng menu gồm: + Thêm từ + Tra từ + Xóa từ + Xem cà danh sách Các thuật tốn cần phải tìm hiểu Để thực ý tưởng đặt ra, cần phải tìm hiểu thuật toán sau: + Các thuật toán liên quan đến danh sách liên kết: + Các thuật toán liên quan đến xuất/nhập, in MENU hình + Các thuật toán liên quan đến xử lý file II CÁC BƯỚC THỰC HIỆN Cấu trúc chương trình: Chương trình bao gồm file Header file cpp để thực hiện, • File header bao gồm: + Các thuật toán liên quan đến danh sách liên kết + Các thuật toán liên quan đến xuất/ nhập, in Menu + Các thuật toán liên quan đến xử lý tệp • File cpp bao gồm hàm thực File header Hash_table.h • Khai báo thư viện cần dùng #include #include #include Page Trường đại học Bách Khoa Hà Nội Bài tập lớn môn học KTLT #include #include #include using namespace std; #define M 26 2.1.1 Các thuật toán liên quan đến danh sách liên kết • Lập danh sách liên kết: typedef struct tagnode { char word[20]; char mean[100]; struct tagnode*pNext; }NODE; typedef struct tagList { NODE* pHead; NODE* pTail; }LIST; • Khởi tạo với danh sách rỗng: void initList(LIST &l) { l.pHead= l.pTail = NULL; } • Tạo phần tử chứa thông tin liệu NODE* GetNode(char word[],char mean[]) { NODE *p; p = new NODE; if(p==NULL) { coutmean,mean); p->pNext = NULL; return p; } 2.1.2 Các thuật toán chèn phần tử, thêm bớt phần tử, dùng để khai thác sở liệu mình: • Chèn vào đầu: void AddFirst(LIST &l,NODE* new_ele) { if(l.pHead==NULL) { l.pHead = new_ele; l.pTail = l.pHead; } else { new_ele->pNext = l.pHead; l.pHead = new_ele; } } NODE* InsertHead(LIST &l,char word[],char mean[]) { NODE* new_ele = GetNode(word,mean); if(new_ele == NULL) return NULL; if(l.pHead == NULL) { l.pHead = new_ele; l.pTail = l.pHead; } else { new_ele->pNext = l.pHead; Page Trường đại học Bách Khoa Hà Nội Bài tập lớn môn học KTLT l.pHead = new_ele; } return new_ele; } • Chèn vào cuối: void AddTail(LIST &l,NODE *new_ele) { if(l.pHead == NULL) { l.pHead = new_ele; l.pTail = l.pHead; } else { l.pTail->pNext = new_ele; l.pTail = new_ele; } } NODE* InsertTail(LIST &l,char word[],char mean[]) { NODE* new_ele = GetNode(word,mean); if(new_ele == NULL) return NULL; if(l.pHead == NULL) { l.pHead = new_ele; l.pTail = l.pHead; } else { l.pTail->pNext = new_ele; l.pTail = new_ele; } return new_ele; Page Trường đại học Bách Khoa Hà Nội Bài tập lớn môn học KTLT } • Chèn vào sau phần tử danh sách: NODE* InsertAfter(LIST &l,NODE *q,char word[],char mean[]) { NODE* new_ele = GetNode(word,mean); if(new_ele ==NULL) return NULL; if(q!=NULL) { new_ele->pNext = q->pNext; q->pNext = new_ele; if(q==l.pTail) l.pTail = new_ele; } else AddFirst(l,new_ele); } • Tìm kiếm phần tử danh sách : NODE *Search(LIST l,char word[]) { NODE *p; p = l.pHead; while((p!=NULL) && (strcmp(p->word,word)!=0)) p =p->pNext; return p; } • Xóa phân tử: int RemoveNode(LIST &l,char word[]) { NODE *p = l.pHead; Page Trường đại học Bách Khoa Hà Nội Bài tập lớn môn học KTLT NODE *q = NULL; while(p!=NULL) { if(strcmp(p->word,word)==0) break; q = p; p = p->pNext; } if(p==NULL) return 0; if(q!=NULL) { if(p == l.pTail) l.pTail = q; q->pNext = p->pNext; delete p; } else { l.pHead = p->pNext; if(l.pTail==NULL) l.pTail = NULL; } return 1; } II.2.2 Các thuật tốn liên quan đến xuất/ nhập, in Menu • Duyệt danh sách: void ProcessList(LIST l) { ofstream fg; fg.open("output.txt",ios::app); NODE *p; int i = -1; p = l.pHead; Page Trường đại học Bách Khoa Hà Nội Bài tập lớn môn học KTLT while(p!= NULL) { cout

Ngày đăng: 29/06/2019, 15:22

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan