1. Đề: Viết chương trình pascal: Chuẩn hóa xâu họ tên. Ví dụ, ta nhập vào xâu ' _ _ mAi_ liNH_ _ _NHi_ _ ' và viết chương trình xuất ra xâu 'Mai Linh Nhi' (Các dấu ' _ ' là khoảng cách). Vậy có nghĩa là ta phải làm các công việc sau: • Xóa các khoảng cách thừa ở đầu xâu. • Xóa các khoảng cách thừa ở cuối xâu. • Xóa các khoảng cách thừa bên trong xâu. • Viết in hoa các kí tự đầu của mỗi chữ. (Trước khi thực hiện bước này ta phải chuyển toàn bộ xâu thành kí tự thường, sau đó thực hiện câu lệnh "nếu gặp khoảng cách thì in hoa chữ cái đầu tiên sau khoảng cách". Còn một cách nữa là chuyển toàn bộ xâu thành kí tự hoa rồi chuyển các kí tự không phải kí tự đầu tiên sau khoảng cách về chữ thường, nhưng cách này khó hơn nên mình sẽ dùng cách kia) 2. Giải: ( Khi viết chương trình thì khoảng cách mình sẽ ghi là #32 ) Mã: program ct3; uses crt; var s: string; i, l: integer; begin write('nhap xau s'); Read(s); { Xoá khoảng cách thừa ở đầu xâu. } while s[1] = '#32' do delete(s, 1, 1); { Xoá khoảng cách thừa ở cuối xâu.} l := length(s); while s[l] = '#32' do delete(s, l, 1); { Xoá khoảng cách thừa trong xâu.} while pos(, s) > 0 do delete(s, pos(#32#32, s), 1); { Chuyển xâu thành kí tự thường } for i := 1 to length(s) do if (s >= 'A') and (s <= 'Z') then s:= chr(ord(s + 32)) ; { In hoa kí tự đầu của mỗi chữ } s:= upcase(s[1]); for i := 2 to length(s) do if s = #32 then s[i + 1]:= upcase(s[i + 1]) ; writeln('ho va ten la: ', s); readln; end. Viết bài 1 lần, nhận nhuận bút cả đời: Đăng Ký
Var s: String; I: Longint; Begin ReadLn (s) ; While Pos (#32#32, s) <>0 do Delete (s, Pos (#32#32, s), 1) ; If s[1] =#32 then Delete (s, 1, 1) ; If s[Length (s) ] =#32 then Delete (s, Length (s), 1) ; S: =s+#32; For i: = 1 to Length (s) do s: =LowerCase (s) ; S[1]: =upcase (s[1] ) ; For i: = 1 to Length (s) do If s=#32 then s[i+1]: = upcase (s[i+1] ) ; Writeln (s) ; End.