Tổng hợp : Đề thi và đề cương tuyển sinh Cao học và nghiên cứu sinh môn Ngôn ngữ lập trình từ năm 1993-2007
Trang 1Đề 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 w n−1 để nhận được dãy mới w n = w n-1,w n−1; ở đây dãy con w n−1 đượ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 w0 = 0
Bước 1 có dãy w1 = 0,1
Bước 2 có dãy w2 = 0,1,1,0
Bước 3 có dãy w3 = 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 Antivirus 13 AIDS 118 × 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
Trang 2Đề 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