c++ - 如何打印有序 C++ 字符串数组的直方图?

标签 c++ arrays string

我读取了一个给定的文本文件,然后用文本文件中的每个单词填充我的数组(我检查以确保该文件少于 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/

相关文章:

javascript - jQuery if语句在for循环中不起作用

c# - 是否可以两次使用占位符字符串?

javascript - 从格式化字符串中提取变量

c++ - 公开不透明 C 结构体中的字段

c++ - 存货类问题

javascript - 如何旋转一个javascript数组

python - NumPy 中的逐元素矩阵乘法

c++ - 使用 C++ 在 Mac OS X 上创建应用程序? (不含 cocoa )

c++ - 类型 'wxMenuBar'必须实现继承的纯虚方法 'wxMenuBarBase::GetLabelTop'

python - 用于删除 XML 注释和 HTML 元素的 Python 中的正则表达式