计算一个字符在数组中出现的次数
count number of times a character appears in an array?
我已经思考了很长时间,对这个程序没有任何进展。我不知道从哪里开始。该赋值要求使用单个函数main,并且只能使用iostream库。任务是声明一个由10个元素组成的char数组。接受用户的输入。确定数组是否包含超过1次的任何值。不要显示仅出现1次的字符。
Sample output:
a 2
b 4
..
a和b是字符。2和4表示它们在阵列B中出现的次数。
我尝试使用嵌套循环将一个字符与数组中的所有字符进行比较,并在每次发出类似字符id时递增计数器,但出现了意想不到的结果。
这是代码
#include <iostream>
using namespace std;
void main()
{
char ara[10];
int counter=0;
cout<<"Enter 10 characters in an arrayn";
for ( int a=0; a<10; a++)
cin>>ara[a];
for(int i=0; i<10; i++)
{
for(int j=i+1; j<10; j++)
{
if(ara[i] == ara[j])
{
counter++;
cout<<ara[i]<<"t"<<counter<<endl;
}
}
}
}
算法2:std::map
声明/定义容器:
std::map<char, unsigned int> frequency;
- 打开文件
- 读一封信
- 查找字母:
frequency.find(letter)
- 如果存在字母,则增加频率:frequency[letter]++
- 如果字母不存在,插入频率:frequency[letter]=1
- 处理完所有字母后,在显示字母及其频率的
map
中迭代
以下是解决此问题的一种可能方法。我不会给你完整的代码;仅仅为别人的作业提供完整的实现被认为是不好的。
首先,只使用唯一字符填充新数组。例如,如果输入为:
abacdadeff
新阵列应该只有:
abcdef
也就是说,每个字符应该只出现一次。不要忘记