Bài tập  /  Bài đang cần trả lời

Cho xâu kí tự có dộ lớn 105 kí tự bao gồm chứ cái tiếng Anh, chữ số và dấu cách viết chương trình đếm số

cho xâu kí tự có dộ lớn 105 kí tự bao gồm chứ cái tiếng anh , chứ số và dấu cách viết chương trình đếm số từ có trong xâu s từ là dãy tất cả các chữ cái liên tục độ dài tối đa 1 từ 20 kí tự
 
ai giúp mình với ạ
1 Xem trả lời
Hỏi chi tiết
294
1
0
Nguyễn Nguyễn
09/03/2023 00:32:51
+5đ tặng
Ngôn ngữ pascal

program DemSoTuTrongXau;
uses SysUtils;

var
  s: string;
  i, count: integer;
  word: string;
  isWord: boolean;

begin
  // Nhập xâu kí tự
  Write('Nhap vao mot xau ki tu: ');
  ReadLn(s);

  // Xóa các ký tự không phải chữ cái, số hoặc dấu cách
  for i := Length(s) downto 1 do
    if not (s[i] in ['a'..'z', '0'..'9', ' ']) then
      Delete(s, i, 1);

  // Khởi tạo biến đếm số từ
  count := 0;

  // Khởi tạo biến kiểm tra từ
  isWord := false;

  // Duyệt qua các ký tự trong xâu
  for i := 1 to Length(s) do
  begin
    // Nếu ký tự hiện tại là một chữ cái, số hoặc dấu cách
    if s[i] in ['a'..'z', '0'..'9', ' '] then
    begin
      // Nếu ký tự hiện tại là khoảng trắng, đồng thời từ đang được xét có độ dài lớn hơn 0
      if s[i] = ' ' then
      begin
        if Length(word) > 0 then
        begin
          // Nếu từ đang xét có độ dài nhỏ hơn hoặc bằng 20
          if Length(word) <= 20 then
          begin
            // Tăng biến đếm số từ
            Inc(count);
          end;

          // Đặt lại biến kiểm tra từ
          isWord := false;

          // Xóa từ đang xét
          word := '';
        end;
      end
      else
      begin
        // Nếu ký tự hiện tại là một chữ cái hoặc số
        // Nếu từ đang xét đã đủ dài hoặc không có từ nào đang được xét
        if (Length(word) >= 20) or (not isWord) then
        begin
          // Đặt lại biến kiểm tra từ
          isWord := true;

          // Bắt đầu một từ mới
          word := s[i];
        end
        else
        begin
          // Nếu độ dài từ đang xét chưa đủ, thêm ký tự hiện tại vào từ
          word := word + s[i];
        end;
      end;
    end;
  end;

  // Kiểm tra nếu từ đang xét có độ dài lớn hơn 0 sau khi duyệt qua toàn bộ xâu
  if Length(word) > 0 then
  begin
    // Nếu từ đang xét có độ dài nhỏ hơn hoặc bằng 20
    if Length(word) <= 20 then
    begin
      // Tăng biến đếm số từ
      Inc(count);

  end;

  // Hiển thị số từ đã đếm được

  WriteLn('So tu co trong xau: ', count);

end.
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×