Bài 17: Chương trình con và phân loại

lê chí hiếu

câu 1

Một bạn học sinh Trường THCS A nhận đánh máy một đoạn văn bản không dấu, ở dạng nét liền (Dạng văn bản nét liền là dạng văn bản được đánh máy chỉ với các từ, không có khoảng trắng ngăn cách (dấu cách)), nhưng do sơ xuất nên đoạn văn bản này được đánh máy không ở dạng như yêu cầu. Em hãy chuyển đoạn văn bản trên về dạng theo yêu cầu và kiểm tra xem đoạn văn bản đó có phải là xâu Palindrome hay không? (xâu Palindrome là xâu mà khi viết nó theo thứ tự ngược lại thì xâu đó không thay đổi)

Dữ liệu vào từ file: hsg2.inp

Dòng 1: Đoạn văn bản

Dữ liệu ra file: hsg2.out

Dòng 1: Đoạn văn bản theo yêu cầu.

Dòng 2: Trả lời xâu Palindrome?

Ví dụ:

Dữ liệu vào từ file: hsg2.inp

Dòng 1: Tam mat

Dữ liệu ra file: hsg2.out

Dòng 1: Tammat

Dòng 2: Là xâu Palindrome

Dữ liệu vào từ file: hsg2.inp

Dòng 1: 12 12

Dữ liệu ra file: hsg2.out

Dòng 1: 1212

Dòng 2: Không là xâu Palindrome

câu 2

Người ta định nghĩa, một hằng số được coi là số thực nếu ngoài các số chữ số ra nó còn có dấu chấm ( . ) hoặc một số mũ ( bắt đầu bởi e hay E thường được gọi là số luỹ thừa ) hoặc cả hai. Nếu có dấu chấm ( . ) thì mỗi bên của dấu chấm phải có ít nhất một chữ số. Ngoài ra, ở trước số và trong số mũ còn có thể có một dấu cộng ( + ) hoặc trừ ( - ). Phần số luỹ thừa phải là số nguyên. Số thực có thể có các khoảng trống ở trước hoặc sau nhưng bên trong thì không. Hằng số thực không có giới hạn về giá trị.

Viết chương trình kiểm tra xem các chuỗi kí tự cho trước có phải là những số thực theo định nghĩa trên đây hay không?

Dữ liệu vào:

Dữ liệu vào cho trong tập tin văn bản HSG4.INP gồm nhiều dòng cho nhiều trường hợp cần kiểm tra. Mỗi dòng chứa một chuỗi kí thự Si là chuỗi cần kiểm tra. Dòng cuối cùng chứa kí tự ' * ', dòng này không được xét trong chương trình.Mỗi dòng tối đa 255 kí tự. Dữ liệu ra:

Kết quả ghi trong tập tin văn bản HSG4.OUT gồm nhiều dòng. Mỗi dòng chứa câu trả lời là "DUNG" hoặc "SAI" tương ứng với một dòng trong tập tin HSG4.INP.

Ví dụ:

HSG4.INP

HSG4.OUT

1.2

5.300

1

1.0e55

+1e-12

2011

e-12 *.

DUNG

DUNG

SAI

DUNG

DUNG

SAI

SAI

câu 3

Nhập một xâu kí tự S khác rỗng.

Yêu cầu: - Đếm trong xâu có bao nhiêu từ.

- Thực hiện chuẩn hoá xâu. Tức là xoá các dấu cách thừa và chuyển các chữ cái đầu thành chữ hoa, những ký tự khác thành chữ thường.

Dữ liệu vào: Được cho trong tệp BAI1.INP gồm 1 dòng ghi xâu S

Dữ liệu ra: Kết quả ghi ra tệp BAI1.OUT có cấu trúc như sau:

- Dòng 1: Ghi số lượng từ có trong xâu S.

- Dòng 2: Ghi xâu S sau khi đã được chuẩn hoá.

Ví dụ:

BAI1.INP

BAI1.OUT

pHong giAo duC vA daO tAo vInh tUong

8

Phong Giao Duc Va Dao Tao Vinh Tuong

Lê Hoàng Thắng
27 tháng 8 2019 lúc 21:31

1: while pos(#32,s)>0 do delete(s,pos(#32,s),1);

Còn kiểm tra palindom thì đầu tiên cho kiểm tra là true, chạy for từ đầu đến length div 2, nếu s[i] khác s[length-i+1] thì kiểm tra false, còn lại tự biết.

2: Các trường hợp sai

-Không có chấm hoặc nhiều hơn 1 chấm.

-1 trong 2 bên dấu chấm không phải là số hoặc 1 trong 2 bên không có số.

-dấu + hoặc - đặt sai vị trí (ko đặt đầu xâu, bên phải chữ e, giữa số mũ).

-Xuất hiện 1 kí tự khác e, +, -, số, khoảng cách.

-Xuất hiện khoảng cách giữa xâu

(Mình nghĩ vậy)

3. S:=lowercase(s); đưa s về xâu thường.

Chèn khoảng cách (#32) vô đầu xâu cho dễ xử lí: gọi s là xâu nhập vào, i là biến chạy, nếu s[i+1] không phải khoảng cách và s[i] là khoảng cách thì tăng đếm và upcase s[i+1] lên, đếm là số in ra

Cuối cùng là xóa khoảng cách thừa bằng:

While pos(#32#32,s)>0 do deletes(s,pos(#32#33,s),1);

If s[1]=#32 then delete(s,1,1);

If s[length(s)]=#32 then delete(s,length(s),1);

(#32 là dấu khoảng cách theo bảng mã ascii)

Bình luận (1)

Các câu hỏi tương tự
Vương Thế Tài
Xem chi tiết
Ngô Chí Thành
Xem chi tiết
Nguyễn Văn Nhiên
Xem chi tiết
Như Thuần Nguyễn Đặng
Xem chi tiết
Đinh Thị Hạnh
Xem chi tiết
Irist Nguyễn
Xem chi tiết
Hải Ngọc
Xem chi tiết
Munz
Xem chi tiết
Ngô Chí Thành
Xem chi tiết