Thoa đang học ngoại ngữ và cô ấy đã viết 1 loạt các từ ra một cuốn sổ. Một từ ở ngoại ngữ đó được cho là sai nếu: Không có nguyên âm nào (nguyên âm là các ký tự a , e , o , i , u). Có nhiều hơn 3 nguyên âm liên tiếp. Kết thúc bởi 3 phụ âm liên tiếp. Cho một mảng words chứa các từ mà Thoa viết trong cuốn sổ. Hãy đếm số từ mà Thoa viết không sai, giả định rằng các từ không vi phạm các quy tắc trên đều là không sai và các chữ cái đều chỉ nằm trong bảng chữ cái alphabet và không phân biệt hoa, thường. Ví dụ: Với words = ["hard", "knh", "stuck", "cooaol", "Spam", "okhl"] thì false_words(points) = 3 Giải thích: Các từ "knh", "okhl", "cooaol" vi phạm các quy tắc, do đó chúng sai. Số từ không sai còn lại là 3 Đầu vào/Đầu ra: [Thời gian chạy] 0.5s với C++, 3s với Java và C#, 4s với Python, Go và JavaScript. [Đầu vào] Array.String words Mảng chứa các từ mà Thoa viết 0< words.length ≤ 1000 [Đầu ra] Integer Số từ mà Thoa viết không sai.

1 câu trả lời

uses crt;
var n,i,j,x,kt,ktt,dem:longint; s:string;
begin
clrscr;
   write('Nhap so tu: ');readln(n);
   for i:=1 to n do
      begin
         write('Nhap tu thu ',i,': ');readln(s);
         s:=upcase(s); ktt:=0;
         for j:=1 to length(s) do
            begin
               kt:=0;
               for x:=j to j+2 do
               if (s[x]='A')or(s[x]='O')or(s[x]='E')or(s[x]='U')or(s[x]='I')
               then inc(kt); inc(x);
               if (kt=3)and(s[x]='A')or(s[x]='O')or(s[x]='E')
               or(s[x]='U')or(s[x]='I') then ktt:=1;
               if j=length(s)-2 then
                  begin
                     kt:=0;
                     for x:=j to j+2 do
                     if not((s[x]='A')or(s[x]='O')or(s[x]='E')
                     or(s[x]='U')or(s[x]='I')) then inc(kt);
                     if kt=3 then ktt:=1;
                  end;
            end;
            if ktt=1 then inc(dem);
      end;
      writeln(dem);
readln
end.

Câu hỏi trong lớp Xem thêm