Cấu trúc dữ liệu & Giải thuật Bộ môn Công nghệ Tri thức BÀI TẬP THỰC HÀNH 06 BẢNG BĂM 1 Nội dung Tập tin "MST txt" là file chứa thông tin của 5000 Công ty ở Việt Nam Tập tin này có một phần nội dung n[.]
Cấu trúc liệu & Giải thuật Bộ môn Công nghệ Tri thức BÀI TẬP THỰC HÀNH 06: BẢNG BĂM Nội dung Tập tin "MST.txt" file chứa thông tin 5000 Công ty Việt Nam Tập tin có phần nội dung sau: Trong đó: • Dịng thể tên trường thơng tin có tập tin • Những dịng thể thông tin công ty, bao gồm Tên công ty, mã số thuế công ty địa Mỗi trường thông tin cách dấu gạch thẳng (|) Sinh viên yêu cầu đọc thông tin Công ty từ file vào cấu trúc liệu Company, sau lưu trữ dạng bảng băm Thực hành Cho struct Company định nghĩa sau: struct Company { string name; string profit_tax; string address; }; Yêu cầu Sinh viên định nghĩa hàm sau: Hàm đọc liệu từ tập tin: • vector ReadListCompany(string file_name) • Đầu vào: file_name tên tập tin đầu vào (trong tập thực hành MST.txt) • Đầu ra: danh sách công ty đọc từ tập tin lưu biến có kiểu liệu vector Hàm băm chuỗi thành số với chuỗi tên công ty: • int HashString(string company_name) • Đầu vào: company_name có kiểu liệu string tên công ty muốn băm thành số (kiểu liệu số nguyên) Trang / Cấu trúc liệu & Giải thuật Bộ môn Cơng nghệ Tri thức • Đầu ra: giá trị chuỗi đầu vào băm thành kiểu liệu số ngun • Cơng thức băm: hash(s) = n−1 X ((s[i] × pi ) mod m) i=0 Trong đó: + s 20 ký tự cuối chuỗi tên đầu vào s = company_name.substr(company_name.length() - 20) Nếu chuỗi tên đầu vào 20 ký tự lấy toàn + s[i] mã ASCII ký tự vị trí thứ i chuỗi s + p = 31 + m = 109 + • Ví dụ: - Đầu vào: "CTDLGT" - 20 ký tự cuối chuỗi: "CTDLGT" (trong trường hợp không đủ 20 ký tự nên lấy toàn chuỗi) - Đầu ra: 472750792 Hàm tạo bảng băm từ danh sách công ty (vector), với số lượng phần tử bảng băm 5000: • Company* CreateHashTable(vector list_company) • Đầu vào: list_company danh sách công ty đọc từ tập tin • Đầu ra: bảng băm tạo từ danh sách đầu vào • Gợi ý: sử dụng hàm HashString định nghĩa Hàm thêm thông tin cơng ty vào bảng băm có: • void Insert(Company* hash_table, Company company) • Đầu vào: - hash_table: bảng băm - company công ty muốn thêm vào bảng băm Hàm tìm kiếm thơng tin công ty bảng băm thông qua tên cơng ty: • Company Search(Company* hash_table, string company_name) • Đầu vào: - hash_table bảng băm (được lưu mảng) - company_name tên cơng ty muốn tìm kiếm thơng tin • Ouput: cơng ty tìm từ bảng băm, có kiểu liệu Company Quy định nộp • Sinh viên nộp toàn mã nguồn liên quan thơng qua tập tin MSSV.zip MSSV.rar • Mỗi phần cần đặt thư mục riêng Tất nằm thư mục MSSV (Lưu ý: nộp file h cpp) • Các nộp sai quy định bị điểm • Các làm giống bị điểm môn học Trang / ... hash_table, Company company) • Đầu vào: - hash_table: bảng băm - company công ty muốn thêm vào bảng băm Hàm tìm kiếm thơng tin công ty bảng băm thông qua tên công ty: • Company Search(Company*... danh sách công ty đọc từ tập tin • Đầu ra: bảng băm tạo từ danh sách đầu vào • Gợi ý: sử dụng hàm HashString định nghĩa Hàm thêm thông tin cơng ty vào bảng băm có: • void Insert(Company* hash_table,... đủ 20 ký tự nên lấy toàn chuỗi) - Đầu ra: 472750792 Hàm tạo bảng băm từ danh sách công ty (vector), với số lượng phần tử bảng băm 5000: • Company* CreateHashTable(vector list_company)