Viết chương trình pascal: Chuẩn hoá xâu họ tên

Thảo luận trong 'Học Online' bắt đầu bởi Liễu., 11 Tháng ba 2021.

  1. Liễu.

    Bài viết:
    110
    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ý
     
    Thùy MinhAdmin thích bài này.
    Chỉnh sửa cuối: 15 Tháng sáu 2022
  2. MinhBui

    Bài viết:
    1
    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.
     
Từ Khóa:
Trả lời qua Facebook
Đang tải...