YOMEDIA
NONE

Nhập vào một xâu s và in ra các từ của nó (Từ là một dãy các kí tự, cách nhau bởi dấu cách). Xâu có bao nhiêu từ là đối xứng?

Theo dõi Vi phạm
ATNETWORK

Trả lời (1)

  • Có nhiều cách để tách một xâu thành các từ. Cách đơn giản nhất tiến hành như sau:

    1)   Bỏ qua các dấu cách cho đến khi gặp một kí tự khác cách (hoặc hết xâu).

    2)   Ghi các kí tự tiếp theo vào xâu tạm cho đến khi gặp dấu cách hoặc hết xâu, khi đó ta được 1 từ.

    3)   Nếu chưa hết xâu thì quay lại bước 1.

    Mỗi khi tìm được một từ, ta ghi luôn nó ra màn hình, nếu từ đó là đối xứng thì tăng biến đếm. Ta cũng có thể lưu các từ tách được vào một mảng nếu bài tập yêu cầu dùng đến những từ đó trong các câu sau.

    Chương trình:

    var s : string;

        dem : integer;

    {Hàm kiểm tra từ đối xứng}

    function doixung(x : string) : boolean;

    var y : string;

        i : integer;

    begin

         y := '';

         for i := length(x) downto 1 do y := y + x[i];

         if x=y then doixung := true else doixung := false;

    end;

    {Thủ tục thực hiện tách từ}

    procedure tach;

    var i, len : integer;

        t : string;

    begin

         writeln('Cac tu trong xau:');

         i := 1; len := length(s);

         repeat

    {B1: bỏ qua các dấu cách cho đến khi hết xâu hoặc gặp 1 kí tự khác cách:}

               while (s[i]=' ') and (i<=len) do inc(i);

               if i>=len then break; {nếu hết xâu thì dừng}

               t := '';         {t là biến tạm lưu từ đang tách}

    {B2: lấy các kí tự khác cách đưa vào biến tạm cho đến khi hết xâu hoặc gặp 1 kí tự cách:}

               while (s[i]<>' ') and (i<=len) do begin

                     t := t + s[i];

                     inc(i);

               end;

    {in ra từ vừa tách được và kiểm tra đối xứng}

               writeln(t);

               if doixung(t) then inc(dem);

         until i >= len;

         writeln('So tu doi xung trong xau:',dem);

    end;

    (************************************************)

    BEGIN

         write('Nhap vao 1 xau:');

         readln(s);

         tach;

    END.

      bởi Thanh Nguyên 30/11/2021
    Like (0) Báo cáo sai phạm

Nếu bạn hỏi, bạn chỉ thu về một câu trả lời.
Nhưng khi bạn suy nghĩ trả lời, bạn sẽ thu về gấp bội!

Lưu ý: Các trường hợp cố tình spam câu trả lời hoặc bị báo xấu trên 5 lần sẽ bị khóa tài khoản

Gửi câu trả lời Hủy
 
NONE

Các câu hỏi mới

AANETWORK
 

 

YOMEDIA
ATNETWORK
ON