Đề 17
1/2
Đề thì tuyển Nghiên cứu sinh và Cao học 1996 (Đề 1)
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 các phân số tối giản theo thứ tự tăng T
n
= {
k
m
| 0 ≤ m ≤ k ≤ n}, với n
cho trước được xây dựng dần dần như sau:
Với n = 1 T
1
= {0/1 , 1/1}
Với n = 2 T
2
= {0/1 , 1/2 , 1/1}
Với n = 3 T
3
= {0/1 , 1/3 , 1/2 , 2/3 , 1/1}
Với n = 4 T
4
= {0/1 , 1/4 , 1/3 , 1/2 , 2/3 , 3/4 , 1/1}
Ở mỗi bước n tiếp sau, ta chèn vào giữa 2 phân số kế tiếp trong dãy T
n-1
nhận
được ở bước n-1:
b
a
và
d
c
phân số mới
v
u
với u=a+c, v=b+d với điều kiện b+d=n.
1. Viết thủ tục đệ qui
Procedure phanso(n:integer; var kqua:day; k:integer);
Với
Type day=array[1..100] of string[7];
Nhằm xây dựng dãy kqua gồm các phân số tối giản theo thứ tự tăng T
n
; quy
ước: Các phần tử 0,1 được viết dưới dạng 0/1 và 1/1 tương ứng.
2. Đưa ra một phương án không dùng đệ qui.
Bài 2. Cho một danh sách móc nối lưu trữ các 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 trong một thư viện như hình vẽ:
Thuvien
Toan
01 Giait A 90 09 Pascal A 18 C D 96 × 03 Daiso B 81 ×
Ly × × Hoa × × Tinhoc ×
Các cấu trúc dữ liệu được khai báo như sau:
Type str25=string[25];
Troloai=^loai;
Loai=record
Theloai:str25;
Dau,cuoi:^sach;
T
End;
iep:troloai;
Trosach=^sach;
Sach=record
Sohieu:integer;
Ten:str25;
Tacgia:str25;
Nam:integer;
Next:trosach;
End;
Var thuvien:Troloai;
Trình bày: Trần Hoài Nhân
Đề 17
2/2
Hãy viết các chương trình con:
1.
Procedure Them(var l:troloai; lvuc,tensach,nguoi:str25;
so,nam:integer);
Cho phép thực hiện thêm vào thư viện một cuốn sách mới thuộc thể loại
lvuc có tên là tensach, được tác giả nguoi viết vào năm nam, cuốn sách có số
hiệu so.
- Nếu thể loại lvuc chưa có trong thư viện, thì tạo một bản ghi về thể loại,
đặt nó ở vị trí phù hợp, với các con trỏ tương ứng chỉ một bản ghi khác
về sách với các tham số so, tensach, nguoi, nam đã cho.
- Nếu thể loại sách đã có, thì thêm vào danh sách móc nối tương ứng một
bản ghi về sách mới vào cuối danh sách (chú ý kiểm tra so cuổn sách này
đã có trong danh sách chưa).
2.
Function CuNhat(var l:troloai):integer;
Cho kết quả là năm xuất bản của cuốn sách ra đời sớm nhất có trong thư
viện.
3.
Procedure Trich(author:str25; l:troloai; var
tuyen:trosach);
Nhằm trích ra từ thư viện đã cho các tác phẩm về mọi thể loại của cùng một
tác giả author nào đó (giả thiết là các tác giả có tên khác nhau). Các tác
phẩm này tạo thành một danh sách móc nối về sách mới (không phân biệt
thể loại), mà đầu của nó được cho bởi biến tuyen. Các phần tử của danh sách
này được chép lại từ danh sách thư viện l và như vậy các thông tin về sách
đã có trong thư viện (kể cả sách của tác giả author nói trên) vẫn như cũ.
Trình bày: Trần Hoài Nhân