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.