Đề 18
1/2
Đề thì tuyển Nghiên cứu sinh và Cao học 1996 (Đề 2)
Môn: Phương pháp lập trình
Thời gian: 120 phút – Được sử dụng tài liệu
Bài 1. Dãy Morse vô hạn m được xây dựng như sau m = x
0
, x
1
, x
2
, …
- Ban đầu, viết phần tử x
0
= 0.
- Ở mỗi bước n tiếp theo, nếu đã có dãy con w
n-1
ở bước n-1, thì ta ghép thêm
vào cuối dãy w
n-1
dãy
1−n
w
để nhận được dãy mới w
n
= w
n-1
,
1−n
w
; ở đây dãy
con
1−n
w
được xây dựng từ dãy con w
n-1
bằng cách thay 0 thành 1, thay 1
thành 0.
Chẳng hạn, ban đầu có dãy w
0
= 0
Bước 1 có dãy w
1
= 0,1
Bước 2 có dãy w
2
= 0,1,1,0
Bước 3 có dãy w
3
= 0,1,1,0,1,0,0,1
1. Viết hàm đệ qui
Function xacdinh(k:integer):integer;
Xác định giá trị của phần tử thứ k trong dãy Morse.
Chẳng hạn: k = 0 giá trị của phần tử thứ 0 là 0
k = 7 giá trị của phần tử thứ 7 là 1.
2. Đưa ra một phương án không dùng đệ qui.
Bài 2. 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
của một tệp văn bản (cuốn sách, bài báo, tài liệu tham khảo,…) như sau:
Tin học: 1, 4, 162
Lập trình: 10, 16, 40, 58
Trước khi in ra, chỉ dẫn này được xây dựng đề lưu trữ tạm thời trong bộ nhớ,
dưới dạng mảng con trỏ, chỉ tới các danh sách tuyến tính các từ có cùng chữ cài
đầu (không phân biệt chữ thường, chữ hoa):
ACM 10 Antivirus 30 AIDS 118 ×Antivirus 13
Buffer 6 Buffer 101 Block 142 ×
a
b
Các cấu trúc dữ liệu được khai báo như sau:
Type Str25=string[25];
Tro=^nut;
Nut=record
Ten:str25;
Trang:integer;
Trình bày: Trần Hoài Nhân
Đề 18
2/2
Tiep:tro;
end;
index=array[‘a’..’z’]of tro;
Var chidan:index;
Keyword:array[1..50]of str25;
Hãy lập các thủ tục:
1.
Procedure them(n:str25; tr:integer);
Thực hiện các công việc sau: Kiểm tra xem từ n có thuộc mảng từ khóa
keyword đã cho trước hay không. Nếu n không thuộc thì không là già cả, nếu
n thuộc thì thêm từ n cùng với chỉ số trang tr vào cuối danh sách tương ứng,
được xác định bởi chữ cái đầu tiên các từ n. Chú ý: không phân biệt chữ
thường, chữ hoa.
2.
Procedure trichyeu;
Nhằm tìm ra 10 từ khóa quan trọng nhất, nghĩa là 10 từ xuất hiện với tần
xuất cao nhất. In các từ này với 5 từ trên một dòng theo thứ tự giảm dần của
số lần xuất hiện cùng với tần xuất xuất hiện tương ứng.
3.
Procedure tach(tr:integer; var chidan1,chidan2:Index);
Nhằm tách chỉ dẫn chidan đã cho thành 2 chỉ dẫn con:
- chidan1 bao gồm các xuất hiện của các thừ khóa tại các trong có chỉ số ≤tr
đã cho.
- chidan2 bao gồm các xuất hiện của các từ khóa tại các trang có chỉ số >tr
đã cho.
4.
Procedure Inchidan;
Cho phép in ra theo qui cách từ khóa cùng với các chỉ số trang tương ứng:
ACM: 10
AIDS: 118
Antivirus: 13, 30
Block: 142
Buffer: 0, 101
Trình bày: Trần Hoài Nhân