我读取了一个给定的文本文件,然后用文本文件中的每个单词填充我的数组(我检查以确保该文件少于 100 个单词,并将单词数存储在顶部)。我按字母顺序(使用冒泡排序)对它们进行排序,然后按顺序获取一组单词,出现次数不同,例如:
string stringText[10] = {alpha, alpha, bravo, charlie, charlie, charlie...}
我需要打印一个直方图,其中每个单词后跟每个出现的单词的“x”(以创建直方图):
阿尔法:xx
太棒了:x
查理:xxx
等等……
我想我的问题是,我应该编辑数组,去掉重复的元素,还是只打印每个唯一元素的第一次出现,然后打印出现的次数?如果我删除重复的元素,我的方法是返回到我读取的字符串中,只计算该词出现的次数。我更倾向于离开数组,只打印第一次出现的唯一事件,然后为每次出现的事件打印一个“x”,但我不确定如何实现它。
我不允许映射/使用 vector 等。
最佳答案
下面的代码需要排序,不限制字数。
const int wordCount = 6;
string stringText[wordCount] = {"alpha", "alpha", "bravo", "charlie", "charlie","charlie"};
int counter = 0;
while(counter<wordCount)
{
cout<<stringText[counter];
cout<<" : x";
for(int i=counter+1;i<wordCount;++i)
{
if(stringText[i]==stringText[counter])
{
cout<<"x";
counter++;
}
}
cout<<endl;
counter++;
}
输出是:
alpha : xx
bravo : x
charlie : xxx
关于c++ - 如何打印有序 C++ 字符串数组的直方图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44284826/