c++ - 如何显示文本中n个字母的单词数? C++

标签 c++ string text char strlen

编写一个程序,读取文本并显示单字母、双字母等单词的数量。单词按字符划分:''、'、'、',' 和 '.'。输入:一行文字,不超过1000个字符。输出:n行整数,表示对应长度的单词个数,n为文本中最长单词的长度。

我想我对如何计算所有单词有一点想法,但 strlen 对我来说还不熟悉,不知道如何进行。任何帮助将不胜感激,谢谢。

#include <iostream>
using namespace std;

int main()

{
    char a[1000];
    short count[1000];
    int wc = 0;
    int max = 0;
    for (int i = 0; i < 1000; i++)
        count[i] = 0;
    for (int i = 0; i < 1000; i++)
    {
        cin >> a[i];
        if ('\n')
            break;
    }
    for (int i = 0; i < 1000; i++)
    {
        if (a[i] != ' ' && a[i] != ',' && a[i] != ';' && a[i] != '.')
            wc++;
        else
        {
            if (wc != 0)
            {
                count[wc]++;
                if (wc > max)
                    max = wc;
            }
            wc = 0;
        }
    }
    for (int i = 0; i < max; i++)
        cout << count[i] << endl;
    return 0;
}    

有人可以帮我修好吗?

最佳答案

在这种情况下,您根本不需要读取字符串。你不关心每个单词的内容,只关心它的长度。因此,您一次只能读取和处理一个字符。当您阅读非分隔符时,增加当前字的大小。读取定界符时,检查当前字长是否非零。如果是,则增加该单词大小的计数。还要检查当前计数是否大于您之前记录的任何计数。如果是,则将最大计数设置为当前计数。

从 1000 条短裤的数组开始,所有短裤都设置为 0 作为不同字号的计数。

处理完所有输入后,您就有了最长单词的记录,因此打印出数组中从 1 到最大值的所有项目的计数。

关于c++ - 如何显示文本中n个字母的单词数? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20344660/

相关文章:

c++ - Qt - 连接 menuBar 和 QWidget

javascript - 在不清除其他内容的情况下更改元素的文本

c++ - 在 C++ 中创建文本文件时要求用户输入文本文件 (ASCII) 名称

C++ Shell执行 URL

c# - 将非托管 char** 编码(marshal)到托管字符串 []

java - 在 string.xml 中将占位符与 % 符号一起用于 String.format()

javascript - 区分何时读取带有字符串的变量

c - 更新文本而不打印新行 c

java - 如何使用像素着色器实现流畅的文字?

c++ - 使用 clang 转储内存布局