Xem mẫu

  1. đề tài thực tập tốt nghiệp đề 1: Cần tổ chức một chỉ dẫn các danh sách từ riêng xuất hiện trong một cuốn sách theo quy cách sau: An: 1, 20, 40, 215 Nam: 10, 145, 320 ... Trước khi in ra, chỉ dẫn này được tạo dựng và lưu trữ dưới dạng một danh sách tuyến tính và móc nối như sau: ... DauDs Cấu trúc dữ liệu: Type Str=String[25]; TroTrg=^Trg; Trg=Record CsTrg:Integer; TrgTiep:TroTrg; End; TroDg=^Dg; Dg=Record Ten:Str; Dau, Cuoi:Trotrg; DgTiep:TroDg; End; Var DauDs:TroDg; Yêu cầu: 1. Viết thủ tục Procedure TaoDs(Var Dau:TroDg); để tạo một danh sách chỉ dẫn như trên. 2. Viết thủ tục Procedure ThemTrg(Dau:TroDg; q:TroDg; Trg:Integer); nhằm thêm một chỉ số trang (Trg) vào cuối một danh sách các trang của tên riêng được trỏ bởi q 3. Viết thủ tục Procedure ThemDg(Var Dau:TroDg; n:Str25; Trg:Integer); nhằm thêm một dòng mới tương ứng với tên riêng n tại trang Trg vào đầu một danh sách được tro bởi Dau. 1
  2. 3. Viết thủ tục procedure Them(Var Dau:TroDg; n:Str25; Trg:Integer); nhằm thực hiện các công việc sau: a. Nếu như tên n chưa có trong danh sách Dau thì ta tạo ra một dòng mới có tên là n với chỉ số trang Trg vào đầu danh sách Dau. b. Nếu tên n đã có trong danh sách thì kiểm tra xem trang xuất hiện cuối cùng của tên đó có phải là Trg hay không?. Nếu đúng thì không làm gì, nếu sai thì thêm vào cuối danh sách. 4. Viết thủ tục Procedure InDg(Dau:TroDg; q:TroDg); nhằm mục đích in một dòng được trỏ bởi q ứng với tên riêng xuất hiện tại các trang đã có tại danh sách, theo quy cách: An:1, 20, 40, 215 5. Viết thủ tục Procedure InCd(Dau:TroDg); nhằm in toàn bộ chỉ dẫn các tên xuát hiện tại các trang đã có trong danh sách 6. Vì lí do nào đó tên riêng n được chuyển thành tên riên g n1. Hãy viết một thủ tục Procedure DoiTen(n, n1:Str25; Var Dau:TroDg); thực hiện công việc đó 7. Giả sử chỉ dẫn không theo thứ tự tăng của tên theo Alphabel. Hãy viết thủ tục Procedure SapXep(Var Dau:TroDg);sắp xếp lại Đề 2: Dãy các phân số tối giản theo thứ tự tăng Tn = { m/k | 0≤ m≤ k≤ n} với n là số nguyên dương cho trước, được xác định như sau; n=1 T1 = {0/1, 1/1} n = 2 T2 = {0/1, 1/2, 1/1} 2
  3. n = 3 T3 = {0/1, 1/3, 1/2, 2/3, 1/1} n=4 T4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1} Qui tắc: ở mỗi bước tiếp theo ta chèn vào giữa hai phân số kế tiếp trong dãy Tn-1 là a/b và c/d phân số mới là u/v, với điều kiện: u = a+c; v = b+d; b+d≤ n Viết 2 thủ tục tạo dãy Tn theo 2 cách sau: Cách 1: Sinh dãy theo quy tắc bằng phương pháp đệ quy hoặc không đệ quy Cách 2: - Sinh ra các phân số dạng {m/k}, trong đó 0≤ m≤ k m≤ k≤ n - Loại các phân số trùng - Sắp xếp lại theo thứ tự tăng Đề 3: Cho một danh sách móc nối lưu trữ thông tin về sách bao gồm: thể loại, số hiệu, tên sách, tác giả, năm xuất bản như một thư viện như trong hình vẽ. ... 3
  4. ... ... Cấu trúc dữ liệu: Type Str25=String[25]; TroLoai=^Loai; Loai=Record TheLoai:Str25; Dau, Cuoi:TroSach; Tiep:TroLoai; End; TroSach=^Sach; Sach=Record SoHieu:Integer; Ten:Str25; TacGia;Str25; NamXb:Integer; Next:TroSach; End; Var ThuVien:TroLoai; Yêu cầu: 1. Tạo thủ tục Procedure TaoTV(Var TV: TroLoai); nhằm tạo thư viện lưu trữ như trên 2. Tạo thủ tục Them(Var TV:TroLoai; Lvuc, TenS, TenTg:Str25;So, Nam:Integer); - Nếu thể loại LVuc chưa có trong thư viện thì tạo bản ghi mới về thể loại, đưa vào vị trí phù hợp với các con trỏ trỏ tới bản ghi về sách bao gồm thông tin: So, TenS, TenTg, Nam - Nếu đã có thể loại đó trong thư viện thì kiểm tra xem sách đó đã có trong thể loại đó chưa. Nếu có rồi thì không làm gì cả, nếu chưa có thì thêm vào cuối danh sách. 3. Tạo hàm Function SomNhat(TV: TroLoai):Integer; nhằm tìm cuốn sách xuất bản sớm nhất có trong thư viện. 4. Tạo Thủ tục Procedure Trich(TenTg:Str25; TV:TroLoai; Var Truyen:TroSach); nhằm trích ra từ thư viện các tác phẩm của cùng tác giả TenTg. 4
  5. đề 4: Người ta muốn thực hiện phép duyệt cây nhị phân giả định các nút được khai báo như sau: Type TroNut=Nut; Nut=Record Info:Integer; Trai,Phai:TroNut; End; Var Cay:TroNut; 5
  6. Yêu cầu: 1. Viết thủ tục Procedure TaoCay(Var C: TroNut); 2. Viết các thủ tục duyệt cây theo 3 phương pháp: duyệt theo thứ tự giữa, duyệt theo thứ tự sau, duyệt theo thứ tự trước. 3.Tính tổng giá trị của cây Chẳng hạn: Kết quả duyệt theo thứ tự giữa: 4 8 2 5 9 1 6 3 10 7 11 Kết quả duyệt theo thứ tự sau: 8 4 9 5 2 6 10 11 7 3 1 Kết quả duyệt theo thứ tự trước: 1 2 4 8 5 9 3 6 7 10 11 Kết quả tính tổng: 66 đề 5: Cho khai báo kiểu danh sách móc nối như sau: Type Tro=^pt; pt=Record Giatri:Integer; Tiep:Tro; End; Yêu cầu: 1. Viết thủ tục Procedure TimMax(Var ds, q:Tro); cho phép lấy phần tử q có Giatri lớn nhất 2. Cho Var ds1, ds2:Tro; trong đó ds1 trỏ tới một danh sách chưa sắp, danh sách ds2 ban đầu bằng NIL. 6
  7. Viết thủ tục Procedure SapChon(Var ds1, ds2:Tro); cho phép lấy dần các phần tử ở ds1 chèn vào ds2 ở vị trí thích hợp sao cho, khi ds1 bằng NIL thì ds2 là một danh sách đã được sắp tăng. đề 6: Cho tệp văn bản trong đó chứa các từ, các dấu phân cách t ừ: dấu cách, dấu phẩy, dấu chấm, dấu chấm phẩy, dấu hai chấm, dấu than, dấu hỏi. Mọi từ bắt đầu bằng chữ cái 'A'..'Z' (không phân biệt chữ hoa và chữ thường) Yêu cầu: 1. Viết thủ tục đọc các từ trong tệp văn bản và lưu trữ vào mảng các danh sách móc nối Var TuDien:array['A'..'Z'] of ds; Type ds=^ptu; ptu=Record Tu:String[10]; Tiep:ds; End; Mỗi danh sách móc nối trong từ điển xếp theo thứ tự tăng và các từ khoá là khác nhau. 7
  8. 2. Viết thủ tục hiển thị các từ ra màn hình theo thứ tự tăng. 3. Viết thủ tục bổ sung từ mới bằng cách đọc từ bàn phím và tìm nó trong từ điển. - Nếu thấy, thì hiển thị thông báo 'Đã có ' - Nếu không chèn vào vị trí thích hợp. đề 7: Người ta biểu diễn biểu thức số học với các phép +, - , *, / hai ngôi và +, - một ngôi bằng một cây trong đó mỗi toán tử được chứa ở một nút trong và mỗi biến được chứa ở một lá. Chẳng hạn: Biểu thức (((1 + 2) * 3) - ((-20)/2/5) Ta có cây sau: Yêu cầu: 1. Giả sử biểu thức số học đã được viết dưới dạng các ngoặc đơn đầy đủ và được lưu trữ trong một xâu. Hãy xây dựng cây xuất phát từ xâu đã cho 8
  9. 2. Dựa vào cây, tính giá trị của biểu thức đó đề 8: Viết chương trình con thực hiện các công việc sau: 1. Nhâp xâu S từ bàn phím. Từ S tách ra tất cả các số nguyên (dãy liên tiếp các chữ số) cùng các dấu +, - xuất hiện trong xâu đó và l ưu trữ chúng vào một mảng A Chẳng hạn: S = "Day so - 12 12.35 +a42 -b12" Ta có mảng A như sau: -12, 12, 35, 42, -12 2. Không dùng mảng phụ khác ngoài A, hãy đếm xem có bao nhiêu số khác nhau xuất hiện trong xâu, đó là những số nào. Sau đó, cho biết mỗi số xuất hiện bao nhiêu lần. 9
  10. đề 9: 1.Đọc hai số nguyên m và n vào từ bàn phím. Giả sử m, n được lưu trữ dưới dạng thập phân là m = a1a2. . .ak, n = b1b2. . .bl, trong đó mỗi ai (i=1..k), bj (j=1..l) là một trong 10 chữ số từ 0 đến 9. Xây dựng hai danh sách móc nối tuyến tính được xác định bởi hai con trỏ so1 và so2 tương ứng với cấu trúc như sau: so1 ... so2 ... 2. Hãy mô phỏng phép toán cộng thủ công theo cột từ trái qua phải (có thể nhớ từ cột này sang cột tiếp theo) với hai số được biểu diễn bới hai danh sách được trỏ bởi con trỏ so1 và so2 tương ứng. Sau khi cộng theo cột ta được dãy tuyến tính móc nối biểu thị tổng của hai số m và n. Chẳng hạn: so1 so2 tong 10
  11. 3. Xuất phát từ danh sách tuyên stính là kết quả nhận được ở câu 2, hãy tìm cách xáo trộn các phần tử của nó sao cho nhận được số lớn nhất có thể. Chẳng hạn: Với danh sách kết quả trên ta được danh sách tương ứng với số lớn nhất là: đề 10: Xét dãy số a1, a2, . . ., an, với n
  12. đề 11: - Viết chương trình minh hoạ thuật toán tìm kiếm theo chiều rộng (TKR) - Viết chương trình giải bài toán Trò chơi 8 số theo phương pháp không gian trạng thái và sử dụng thuật toán TKR 12
  13. đề 12: Viết chương trình minh hoạ thuật toán tìm kiếm sâu dần đối với đồ thị dạng cây đề 13: Viết chương trình minh hoạ thuật toán tìm kiếm với giá thành cực tiểu trên cây có trọng số 13
  14. đề 5: Người ta cần tạo lập một chỉ dẫn về các từ khóa xuất hiện trong các trang văn bản của một văn bản (chẳng hạn cuốn sách, bài báo. . .) Tin học: 1, 4, 102 Lập trinh: 10, 16, 40, 58 1. Viết thủ tục Procedure (n:Str25; Tr:Integer); nhằm thực hiện các công việc sau: a. Kiểm tra xem n có thuộc KeyWord hay không ? Nếu không thì không thì chỉ cần thông báo. b. Ngược lại, nếu n là KeyWord thì thêm n cùng với Tr vào cuối danh sách tương ứng Câu 2: Viết thủ tục Trich; nhằm tìm được 10 từ khoá quan tronngj nhất nghĩa là 10 từ xuất hiện nhiều nhất. In các từ này theo quy cách 5 từ trên một dòng theo thứ tự giảm dần của số lần xuất hiện Từ Số lầ xuất hiện 14
nguon tai.lieu . vn