Viết thủ tục Procedure ThemTrgDau: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 The
Trang 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
Trang 23 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êng 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 | 0mkn} 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}
Trang 3n = 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+dn 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 đó
0mk mkn
- 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ẽ
Trang 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
Trang 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;
Trang 6Yê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
đề 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
Trang 7Viế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
Trang 82 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
Trang 92 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
Trang 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:
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
Trang 113 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<=100
Hãy viết các chương trình con thực hiện các công việc sau:
1 Đọc các giá trị a1, a2, , an vào từ bàn phím và kiểm tra xem dãy nhận được có phải là hoán vị của {1, .,n} hay không?
2 Phân chia dãy a1, a2, , an thành các dãy con tăng dần có độ dài cực đại
Chẳng hạn:
Với dãy {8, 2, 4, 3, 6, 7, 5, 9}
Ta có 4 dãy con sau: {8}; {2, 4}; {3, 6, 7}; {5, 9}
Trang 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
Trang 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ố
Trang 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