Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建文本文件中出现的前10个单词的直方图_C++ - Fatal编程技术网

C++ 创建文本文件中出现的前10个单词的直方图

C++ 创建文本文件中出现的前10个单词的直方图,c++,C++,我试图创建一个文本中前十个单词出现频率(百分比)的直方图。 它需要采用与此类似的格式: 对于:---------------20(百分比和20破折号) 是------------15 他:-------10 战争:--5 有:--5 英雄------5 have:----4 女孩:--5 愤怒的:--4 其他:-------------------------------------32 我知道我需要一个10的for循环,在它里面还有一个带破折号的循环 int main() { 字符串文件\u名

我试图创建一个文本中前十个单词出现频率(百分比)的直方图。 它需要采用与此类似的格式:

对于:---------------20(百分比和20破折号)

是------------15

他:-------10

战争:--5

有:--5

英雄------5

have:----4

女孩:--5

愤怒的:--4

其他:-------------------------------------32

我知道我需要一个10的for循环,在它里面还有一个带破折号的循环

int main() {

字符串文件\u名称;

cout创建一个方法来生成破折号,并将其输出为常量字符*

for(int i = 0; i < stats.size() && i < topMostCount; i++){
    int percent = (double)stats[i].count / words.size * 100.00;
    const char * dashes = genDashes(percent);
    cout << stats[i].word << ": " << dashes << percent << "%";
}
for(int i=0;icout看起来需要一个算法来将百分比转换为“破折号”。您有唯一单词的总数,
tWords
。单词的总数是多少?您有每个单词的计数
stat[i]。count
。在
stat[i]中表示的单词的百分比是多少.count
?获取百分比的整数值,并使用此值输出那么多的破折号。如何计算前10个唯一单词后剩余单词的百分比?将问题分解为几个小部分。解决每个部分。将这些部分放在一起。可以使用一对(键、值)结构,其中关键字是某个单词,值是出现的次数。找到顶部和平均值将很容易。
for(int i = 0; i < stats.size() && i < topMostCount; i++){
    int percent = (double)stats[i].count / words.size * 100.00;
    const char * dashes = genDashes(percent);
    cout << stats[i].word << ": " << dashes << percent << "%";
}
const char * genDashes(int n)
{
    std::stringstream ss_dashes;
    for(int i = 0; i < n; i++){
        ss_dashes << "-";
    }
    std::string s_dashes = ss_dashes.str();
    return s_dashes.c_str();
}