Xin chào mn, hiện tại mình đang làm 1 bài tập liên quan đến chuỗi là đếm số lượng từ có trong một chuỗi cho trước. Code của mình hoạt động cũng khá ổn những khi chuỗi dài & phức tạp thì có sai số (so với số liệu khi paste lên WORD).
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// Viết hàm nhận vào một chuỗi s và đếm xem có bao nhiêu từ trong chuỗi đó.
int countWord(char *);
bool checkAlphabet(char);
int main()
{
char str[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ut magna fringilla, volutpat orci in, suscipit ligula. Maecenas nec urna vel risus vehicula pellentesque. Proin non ex sed erat dignissim finibus eu vitae orci. Curabitur feugiat sem in iaculis pulvinar. Suspendisse non orci tristique mauris vestibulum rutrum non at arcu. Morbi a tortor mi. Sed dictum quam in massa accumsan, eu volutpat orci sagittis. Vivamus vehicula in quam iaculis accumsan. Donec sed egestas massa, ut semper nulla. Vivamus accumsan est id urna vulputate iaculis. In vitae blandit felis. Nullam feugiat ipsum vel volutpat malesuada. Donec sed dictum nisi. Curabitur vitae efficitur purus. Donec laoreet a arcu nec viverra.";
printf("str has %d word(s).\n", countWord(str));
return 0;
}
int countWord(char *str)
{
size_t size = strlen(str);
int word = 0;
if (checkAlphabet(str[0]) && checkAlphabet(str[1]))
++word;
for (int i = 1; i < size - 1; ++i) {
if (str[i - 1] == ' ' && checkAlphabet(str[i]) && checkAlphabet(str[i + 1]))
++word;
}
return word;
}
bool checkAlphabet(char ch)
{
return (65 <= ch && ch <= 90) || (97 <= ch && ch <= 122);
}
Code của mình cho kq là 106 words, trong khi Word là 108 words !! Mình tìm hoài ko ra nó sai chỗ nào, nhờ mn xem giúp nhé, xin cảm ơn trc