C++ 创建文本文件中出现的前10个单词的直方图
我试图创建一个文本中前十个单词出现频率(百分比)的直方图。 它需要采用与此类似的格式: 对于:---------------20(百分比和20破折号) 是------------15 他:-------10 战争:--5 有:--5 英雄------5 have:----4 女孩:--5 愤怒的:--4 其他:-------------------------------------32 我知道我需要一个10的for循环,在它里面还有一个带破折号的循环 int main() {C++ 创建文本文件中出现的前10个单词的直方图,c++,C++,我试图创建一个文本中前十个单词出现频率(百分比)的直方图。 它需要采用与此类似的格式: 对于:---------------20(百分比和20破折号) 是------------15 他:-------10 战争:--5 有:--5 英雄------5 have:----4 女孩:--5 愤怒的:--4 其他:-------------------------------------32 我知道我需要一个10的for循环,在它里面还有一个带破折号的循环 int main() { 字符串文件\u名
字符串文件\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;i cout看起来需要一个算法来将百分比转换为“破折号”。您有唯一单词的总数,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();
}