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
|
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)