Tải bản đầy đủ (.doc) (14 trang)

Đề tài thực tập tốt nghiệp chuyên ngành công nghệ thông tin potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (103.31 KB, 14 trang )

đề 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
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ê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 T
n
= { 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 T
1

= {0/1, 1/1}
n = 2 T
2
= {0/1, 1/2, 1/1}
2
n = 3 T
3
= {0/1, 1/3, 1/2, 2/3, 1/1}
n = 4 T
4
= {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 T
n-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 T
n
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
. . .
. . .
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
đề 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
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
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
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
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
đề 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 = a
1
a
2
. . .a
k
, n = b
1
b
2
. . .b
l
, trong đó mỗi a
i
(i=1 k), b
j
(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
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ố a
1
, a
2
, . . ., a
n
, 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ị a
1
, a
2
, . . ., a
n
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 a
1
, a
2
, . . ., a
n
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}
11
đề 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
đề 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
đề 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

×