Lập trình Pascal - Bài tập về xâu

Viết chương trình liệt kê các từ của một xâu ký tự được nhập vào từ bàn phím, mỗi từ

phải được viết trên một dòng.

Uses Crt;

Var St:String;

Procedure XoaTrangThua(Var St:String);

Begin

{Xóa các ký tự trắng ở đầu xâu}

While St[1]=#32 Do Delete(St,1,1);

{Xóa các ký tự trắng ở cuối xâu}

While St[Length(St)]=#32 Do

Delete(St,Length(St),1);

{Xóa các ký tự trắng ở giữa xâu}

While POS(#32#32,St)<>0 Do

Delete(St,POS(#32#32,St),1);

End;

pdf17 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 31556 | Lượt tải: 1download
Tóm tắt nội dung Lập trình Pascal - Bài tập về xâu, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
tên một file đã có trên đĩa. 
Gợi ý: Dùng thủ tục Rename. 
Bài tập 8.13:Viết chương trình xóa một file có trên đĩa. 
Gợi ý: Dùng thủ tục Erase. 
Bài tập 8.14:Viết chương trình nối 2 file văn bản đã có trên đĩa thành một file thứ 3 với tên file 
được nhập vào từ bàn phím. 
Gợi ý: - Mở file 1 và file 2 để đọc dữ liệu, mở file 3 để ghi dữ liệu. 
 - Lần lượt đọc từng phần tử trong file 1 và 2 lưu vào file 3. 
 - Đóng cả ba file lại. 
Bài tập 8.15:Viết chương trình thực hiện các công việc sau: 
1. Tạo ra 2 file số nguyên và sắp xếp chúng theo thứ tự tăng dần. 
2. Hãy nối 2 file đó lại với nhau thành file thứ 3 sao cho file mới vẫn có thứ tự tăng dần. 
Gợi ý: Xem giải thuật ở bài tập 5.15. 
Bài tập 8.16:Cho đa thức P(x) = a0 + a1x + a2x2 + ... + anxn 
 Trong đó n là bậc của đa thức và a0, a1, ... , an là các hệ số của đa thức được lưu trong một 
file văn bản với qui ước sau: 
 - Dòng đầu của file văn bản chứa bậc của đa thức và giá trị của x. 
 - Dòng tiếp theo chứa các hệ số của đa thức. 
 Ví dụ: P(x) = 3 + 2x - 5x2 + 4x3 , x = 2.5 sẽ được lưu trong file văn bản như sau: 
 3 2.5 
 3 2 -5 4 
 Viết chương trình đọc file văn bản trên để lấy các số liệu rồi tính giá trị của đa thức. 
Gợi ý: - Tổ chức mảng để lưu đa thức. 
 - Viết thủ tục để đọc file text lưu vào mảng. 
 - Tham khảo bài tập 5.8. 
Bài tập 8.17: Viết chương trình đếm số từ có trong một file văn bản. 
Gợi ý: - Viết hàm COUNT để đếm số từ của 1 dòng. 
 - Đọc từng dòng của file văn bản, dùng hàm COUNT để cộng dồn vào biến dem. 
Bài tập 8.18: Tại một cửa hàng, người ta quản lý các hoạt động MUA/BÁN trong năm bằng cùng 
một loại hoá đơn. Mỗi hoá đơn là một bản ghi gồm các trường: 
 15
SoHoadon (số hoá đơn); Thang (tháng mua/bán); Mahang (mã hàng mua/bán); Loai (nhận 
một trong hai giá trị ‘M’(mua) hoặc ‘B’ (bán) 
Như vậy căn cứ vào trường Loai ta biết đó là hoá đơn mua hay hoá đơn bán. Viết chương trình 
cho phép nhập vào một dãy các hoá đơn và lưu vào file có tên Hoadon.dat, quá trình nhập dừng 
khi SoHoadon = 0. Tính số dư trong tháng n (n được nhập từ bàn phím khi thực hiện chương 
trình) . Biết rằng số dư trong một tháng được tính theo công thức: 
 Số dư = Tổng bán - Tổng mua, 
trong đó tổng bán, tổng mua lần lượt là tổng số tiền bán, mua trong tháng đó. 
Yêu cầu: 
 Khi nhập chú ý kiểm tra để Loai chỉ nhận một trong hai giá trị ‘M’ hoặc ‘B’ và tháng chỉ nhận 
giá trị từ 1 đến 12. 
 Không được sử dụng mảng. 
Hướng dẫn: Khai báo file lưu các hoá đơn, mỗi hoá đơn là một bản ghi như sau 
 Type Hoadon = record 
 SoHoadon: word; 
Thang: byte; 
Mahang: string[5]; 
Loai: char; 
 end; 
 Var f: file of hoadon; 
Bài tập 8.19: Người ta quản lý các đầu sách của một thư viện bằng một bản ghi gồm có các 
trường: Masach, Tensach, Tentacgia, Nhaxb (nhà xuất bản), Namxb (năm xuất bản), SoLuong. 
Viết chương trình cho phép thực hiện các thao tác sau: 
a. Nhập vào các đầu sách có trong thư viện và lưu vào file có tên Sach.dat, quá trình nhập 
dừng khi mã sách đưa vào là một xâu rỗng. 
b. Duyệt và in ra tên các quyển sách được xuất bản sau năm m (m được nhập từ bàn phím khi 
thực hiện chương trình). 
c. Bố sung sách vào thư viện theo yêu cầu: nếu sách đã có thì chỉ tăng số lượng sách bổ sung, 
ngược lại thêm một đầu sách mới vào file. 
Chú ý:Không được sử dụng mảng 
- Khi nhập chú ý kiểm tra để năm xuất bản <= năm hiện tại 
- Sau khi in ra danh sách các đầu sách xuất bản sau năm m, cho biết thêm danh sách đó có 
bao nhiêu đầu sách tất cả. 
Hướng dẫn: Khai báo thư viện là một file các đầu sách, mỗi đầu sách là một bản ghi như sau 
Type St5 = String[5]; 
 St20 = String[20]; 
 Dausach = Record 
 Masach: St5, 
 Tensach, Tentacgia, Nhaxb: St20, 
 Namxb: word; 
 SoLuong: byte; 
 end; 
Var f: file of DauSach; 
Bài tập 8.20: Người ta lưu thông tin các cán bộ trong cơ quan vào file có tên CANBO.DAT, mỗi 
cán bộ là một bản ghi gồm các trường: STT, Hoten, Ngaysinh, Diachi, HSLuong, HSPhucap, 
SoDT. Hãy viết chương trình thực hiện các yêu cầu sau: 
a. Nhập danh sách cán bộ và lưu vào file, quá trình nhập dừng khi họ tên nhập vào là xâu rỗng 
và trường STT chương trình tự gán. 
 16
b. In ra danh sách cán bộ có hệ số lương nằm trong khoảng từ x đến y, x và y là các số thực 
được nhập từ bàn phím khi thực hiện chương trình. 
c. Sao chép thông tin các cán bộ có tuổi trên 50 vào một file khác. 
d. In bảng lương của tất cả cán bộ lưu trong file CANBO.DAT ra màn hình gồm các thông tin: 
STT, Hoten, HSLuong, Luong, trong đó Luong được tính theo công thức Luong = 
(HSLuong+HSPhucap)*290000, dữ liệu in ra định dạng theo cột. Cuối bảng, in tổng lương 
của toàn cơ quan. 
e. Sao chép nội dung của file CANBO.DAT vào file văn bản CANBO.TXT, mỗi cán bộ tương 
ứng một dòng. 
 Hướng dẫn: Khai báo mỗi cán bộ là một bản ghi như sau 
Type St10 = String[10]; 
 St20 = String[20]; 
 Canbo = Record 
 Hoten, Diachi: St20, 
Ngaysinh: St10; {dd/mm/yyyy} 
HSluong, HSPhucap: real; 
SoDT: St10; {Số điện thoại } 
end; 
Var f: file of Canbo; 
 Khi nhập ngày sinh phải kiểm tra định dạng theo yêu cầu: dd/mm/yyyy 
 Tuổi của một cán bộ được tính bằng năm hiện tại trừ cho năm sinh. Năm sinh lấy từ 4 ký tự 
cuối cùng của ngày sinh và chuyển sang dạng số. 
Bài tập 8.21: Viết chương trình nhập vào tên một file văn bản. Kiểm tra file này có tồn tại trên đĩa 
không? Nếu có, in nội dung của file từ dòng thứ m đến dòng thứ n, trong đó m và n là hai số 
nguyên dương bất kỳ được nhập từ bàn phím khi thực hiện chương trình. 
Hướng dẫn: Mở file bằng thủ tục Reset, rồi chuyển con trỏ về dòng thứ m, đọc và in n dòng (hoặc 
cho đến hết file). 
Bài tập 8.22:Giả sử trong một file văn bản trên đĩa có tên là MATRIX.TXT người ta đã lưu các số 
liệu về một ma trận A cấp mxn và một vector X n chiều. Cách lưu trữ như sau: 
 Dòng đầu tiên chứa hai số m và n 
 Dòng thứ hai chứa vector X 
 m dòng tiếp theo lần lượt chứa m hàng của ma trận A 
 Giữa các số trong một dòng cách nhau một ký tự trắng 
Viết chương trình tính giá trị vector Y = AX và đưa kết quả ra màn hình đồng thời lưu vào cuối 
file MATRIX.TXT (A và X được lấy từ file MATRIX.TXT) 
Yêu cầu: 
Chương trình phải thiết lập các thủ tục sau 
 LayDulieu(A,X,m,n) thực hiện việc đọc dữ liệu từ file MATRIX.TXT và gán cho A, X, m, n 
 TinhTich(A,X,m,n,Y) thực hiện việc tính vector Y 
 LuuKetqua(Y,m) thực hiện việc in vector Y ra màn hình và lưu vào cuối file MATRIX.TXT 
 Thành phần thứ i của vector Y được tính theo công thức 
     


m
j
jXjiAiY
1
*, 
Bài tập 8.23: Giả sử trong một file văn bản trên đĩa có tên là DANHBA.TXT lưu danh bạ điện 
thoại trong thành phố. Cách lưu như sau: 
 Dòng đầu lưu hai số nguyên dương m và n, trong đó m là số máy điện thoại thuộc cơ quan nhà 
nước, còn n là số máy thuộc tư nhân. 
 17
 m dòng tiếp theo lưu thông tin lần lượt của m máy điện thoại thuộc cơ quan nhà nước, mỗi 
dòng ghi số điện thoại, một ký tự trắng và sau đó là tên cơ quan. 
 n dòng tiếp theo nữa lưu thông tin lần lượt của n máy điện thoại tư nhân, mỗi dòng ghi số điện 
thoại, một ký tự trắng và sau đó là họ tên chủ điện thoại. 
Viết chương trình đọc dữ liệu từ file DANHBA.TXT và in bảng danh bạ điện thoại ra màn hình 
theo thứ tự tăng dần của chủ máy điện thoại, các máy điện thoại thuộc cơ quan nhà nước in trước 
rồi đến các máy điện thoại tư nhân. Danh sách in ra theo 3 cột, cột 1 ghi số điện thoại, cột 2 ghi 
tên cơ quan hoặc tên chủ máy điện thoại, cột 3 ghi loại là TN (tư nhân) hoặc NN (nhà nước) 
Yêu cầu: 
 Khai báo kiểu bản ghi là MAYDT bao gồm 3 trường: SoDt, TenChu, Loai 
 Thiết lập thủ tục LayDulieu(A,k) để đọc dữ liệu từ file DANHBA.TXT và lưu vào mảng A 
(mảng các MAYDT) với k là số phần tử của mảng. 
 Thiết lập thủ tục SAPXEP(A,k) để sắp xếp mỗi nhóm máy điện thoại nhà nước, tư nhân theo 
thứ tự tăng dần của tên chủ máy điện thoại trong mảng A. 
 Thiết lập thủ tục INKETQUA(A,k) để in ra màn hình danh bạ điện thoại từ mảng A. 
Bài tập 8.24: Cho một file văn bản có có tên là MATRIX.TXT với nội dung như sau: 
 Dòng đầu tiên của file chứa hai số nguyên dương m và n lần lượt là số hàng và số cột của một 
ma trận cấp mxn (m,n <=50). 
 m dòng tiếp theo mỗi dòng chứa n số nguyên là gía trị các phần tử của mỗi hàng. 
Hãy viết chương trình thực hiện các yêu cầu sau: 
a. Viết thủ tục LAYDULIEU để đọc dữ liệu từ file MATRIX.TXT và lưu vào mảng hai chiều 
A. 
b. Viết hàm MAXDONG(i:Byte): LongInt trả về giá trị lớn nhất của hàng i. 
c. Ghi các giá trị lớn nhất của mỗi hàng vào cuối file MATRIX.TXT. 
Bài tập 8.25: Viết chương trình tạo ra hai tập tin lưu các số kiểu word mà các số trong mỗi file đã 
được sắp thứ tự tăng dần. Hãy tạo tập tin mới chứa tất cả các số của 2 tập tin trên sao cho thứ tự 
tăng dần vẫn được duy trì. 
Chú ý: Không được dùng mảng. 
Bài tập 8.26: Giả sử trong một file văn bản trên đĩa có tên là MT.DAT người ta đã lưu các số liệu 
về hai ma trận A và B cùng cấp mxn. Cách lưu trữ như sau: 
 Dòng đầu tiên chứa hai số m và n 
m dòng tiếp theo lần lượt chứa m hàng của ma trận A 
m dòng tiếp theo nữa lần lượt chứa m hàng của ma trận B 
Giữa các số trong một dòng cách nhau một ký tự trắng 
Viết chương trình tính ma trận tổng C = A + B và ghi kết quả vào file MT.OUT với cấu trúc: 
dòng đầu chứa số m, m dòng tiếp theo chứa ma hàng của ma trận C. 
Bài tập 8.27: Để có thể sao chép các file có kích thước lớn lên đĩa mềm, người ta chia nhỏ file cần 
chép thành nhiều file có kích thước nhỏ hơn, sau đó nối các file này lại bằng lệnh copy. Hãy viết 
chương trình sao chép một file thành hai file có kich thước bằng nhau. Tên của tập tin nguồn và 
hai tập tin đích được nhập từ bàn phím khi thực hiện chương trình. 
Hướng dẫn: Khai báo các file nguồn và đích là các file không định kiểu. Gọi Temp là một nửa 
kích thước của file nguồn, tính bằng byte. Thực hiện việc sao chép từ byte đầu tiên đến byte thứ 
Temp vào file đích thứ nhất, sau đó chép phần còn lại của file nguồn vào file đích thứ hai. 

File đính kèm:

  • pdfLập trình Pascal - Bài tập về xâu.pdf