如何计算c中每个字符串的单词和句子数?
以下是一个练习的说明,我必须解决cs50 pset2可读性问题(从站点粘贴副本):如何计算c中每个字符串的单词和句子数?,c,cs50,readability,C,Cs50,Readability,以下是一个练习的说明,我必须解决cs50 pset2可读性问题(从站点粘贴副本): 你的程序应该计算文本中字母、单词和句子的数量。您可以假设字母是从a到z的任何小写字符或从a到z的任何大写字符,由空格分隔的任何字符序列都应算作一个单词,句号、感叹号或问号的任何出现都表示句子的结尾 这些不是完整的说明,只是我有问题的部分 我知道如何计算课文中的字母数,但我不知道如何计算单词和句子。我试着用谷歌搜索它,并使用其他外部资源,但弹出的只是问题的答案,坦率地说,这感觉像作弊。这是我的代码: #包括 #
- 你的程序应该计算文本中字母、单词和句子的数量。您可以假设字母是从a到z的任何小写字符或从a到z的任何大写字符,由空格分隔的任何字符序列都应算作一个单词,句号、感叹号或问号的任何出现都表示句子的结尾
#包括
#包括
#包括
#包括
#包括
内部主(空)
{
整数字母=0;
字符串文本=获取字符串(“文本:”);
int字=0;
for(int i=0;i
此代码计算正确的字母数,但始终键入单词:0。我还没有完成句子部分。能给我一些帮助吗?如果你给我看答案,你能解释为什么会是这个答案吗
for (int i = 0; i < strlen(text);i++)
{
if (isspace(text[i]) != 0)
{
if(isalpha (text[i] + 1) != 0)
{
words++;
}
}
}
然后以与循环计数单词类似的方式使用它
然后以与循环计数单词类似的方式使用它。欢迎使用。你可以给我们看看你的代码。提示:如果你找到了一些字母,然后你发现了一些不是字母的东西,那么很可能你找到了一个单词的结尾,而下一个字母又开始了一个新单词。我想这个问题可能比堆栈溢出更合适,尽管编程上下文是因为高等数学这里需要的不仅仅是编程艺术。我也会让它更简单。非常感谢你帮助我学习如何改进我的问题和建议。我不会忘记的。事实上,作为一名程序员,学习如何寻求帮助是一项重要而非琐碎的技能:)欢迎来到SO。你可以给我们看看你的代码。提示:如果你找到了一些字母,然后你发现了一些不是字母的东西,那么很可能你找到了一个单词的结尾,而下一个字母又开始了一个新单词。我想这个问题可能比堆栈溢出更合适,尽管编程上下文是因为高等数学这里需要的不仅仅是编程艺术。我也会让它更简单。非常感谢你帮助我学习如何改进我的问题和建议。我不会忘记的。事实上,作为一名程序员,学习如何寻求帮助是一项重要而非琐碎的技能:)非常感谢!我测试了它,它的工作!只有一件事:你能在这些评论中解释为什么你的程序有效,而我的程序无效吗?我以后可能需要这些信息。非常感谢。@Lostincode拿起笔和纸,手工执行。你也可以在循环中插入一个print语句,在每次迭代中查看所有变量的值。而且,我不明白句子是如何工作的。我应该添加一个名为句子的int,然后执行:'int isdelim(char c){return c='.|c='!'| c='?';句子+++}'。顺便问一下,如何在注释中添加新行?每次我试着按ENTER键时,它只是发布评论。你必须自己找出完整的句子。要求某人提供一个完整的解决方案和复制一个解决方案一样是欺骗,只是对每个人都不那么有效;)谢谢!我测试了它,它的工作!只有一件事:你能在这些评论中解释为什么你的程序有效,而我的程序无效吗?我以后可能需要这些信息。非常感谢。@Lostincode拿起笔和纸,手工执行。你也可以在循环中插入一个print语句,在每次迭代中查看所有变量的值。而且,我不明白句子是如何工作的。我应该添加一个名为句子的int,然后执行:'int isdelim(char c){return c='.|c='!'| c='?';句子+++}'。顺便问一下,如何在注释中添加新行?每次我试着按ENTER键时,它只是发布评论。你必须自己找出完整的句子。要求某人提供一个完整的解决方案和复制一个解决方案一样是欺骗,只是对每个人都不那么有效;)
bool reading_word = false; // Flag
int words = 0;
for(int i=0; i<strlen(text); i++) {
if(isspace(text[i]) {
reading_word = false;
}
else if(isalpha(text[i])) {
if(!reading_word) {
reading_word = true;
words++;
}
}
}
int isdelim(char c)
{
return c == '.' || c == '!' || c == '?';
}