如何确保我的函数不会过度计算字数?

问题描述 投票:0回答:1

我正在编写一个函数来计算用户输入的文本字符串中的单词数。目前我已经将

word_count
设置为每次遇到空格或标点符号时都会增加,但我知道这是不对的,因为当它到达句子末尾时它会增加两次。当它遇到单词中的撇号或连字符时,它也会增加。

我认为我需要修改我的 for 循环以将单词视为字符序列,后跟空格或标点符号(但不是撇号或连字符),和/或以某种方式向前查看字符串以查看是否有另一个接下来是空格/标点符号,然后在这种情况下不再增加

word_count
。但我不确定如何做这两件事(或者是否有更好的方法)。

我是一名完全的初学者,并将此练习作为 CS50 第 2 周可读性问题集的一部分进行。我不想要最终的答案——只想要一些线索!预先感谢。

    int count_words(string text)
    {
        int length = strlen(text);
        int word_count = 0;
    
        for (int i = 0; i < length; i++)
        {
            if (isspace(text[i]) || ispunct(text[i])) word_count++;
        }
        return word_count;
    }

如果我输入“这应该是 8 个字。但事实并非如此。”它应该返回 8 个单词。相反,它返回 10。

c function counting
1个回答
0
投票

我建议你探索“有限状态自动机”的世界 这里有两种状态: 1:一句话 2:说一句话 ...之后计算从进到出的转换次数

© www.soinside.com 2019 - 2024. All rights reserved.