我已经思考了很长时间并没有参与该计划。我不知道从哪里开始。赋值需要使用单个函数main,并且只使用iostream库。 任务是声明一个包含10个元素的char数组。从用户那里获取输入。确定数组是否包含任何超过1次的值。不显示仅出现一次的字符。
Sample output:
a 2
b 4
..
a b是字符。 2和4表示它们出现在数组B中的次数。
我尝试使用嵌套循环来比较一个字符与数组中的所有字符,并在每次similer character id声音时递增一个计数器,但是会出现意外的结果。
这是代码
#include <iostream>
using namespace std;
void main()
{
char ara[10];
int counter=0;
cout<<"Enter 10 characters in an array\n";
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;
}
}
}
}
答案 0 :(得分:2)
算法2:std :: map
声明/定义容器:
std::map<char, unsigned int> frequency;
frequency.find(letter)
map
。 答案 1 :(得分:0)
以下是一种可以解决此问题的方法。我没有给你完整的代码;仅仅为其他人的家庭作业提供全面实施被认为是不好的。
首先,填充一个只包含唯一字符的新数组。例如,如果输入为:
abacdadeff
新阵列应该只有:
abcdef
也就是说,每个角色只应出现一次。不要忘记\0
- 终止它,以便你可以知道它的结束位置(因为它的长度可以小于10)。
然后创建一个新的int
(或unsigned
数组,因为你不能出现负数)保存原始输入数组中唯一数组中每个字符出现频率的值。每个值最初应为1.您可以使用以下声明来实现此目的:
unsigned freq[10] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
现在,迭代唯一数组,每次在原始输入数组中找到当前字符时,递增频率数组的相应元素。所以最后,对于上面的输入,你会得到:
a b c d e f (unique array)
3 1 1 2 1 2 (frequencies array)
你已经完成了。您现在可以告诉每个字符在输入中出现的次数。
答案 2 :(得分:0)
在这里,我会告诉你应该做什么,然后自己编写代码:
包含标题(stdio libs)
定义main(应用的入口点)
声明输入数组A [amount_of_chars_in_your_input]
写输出请求用户输入
收集输入
现在主要部分:
声明另一个无符号短路数组B []
声明计数器int i = 0
声明计数器int j = 0
循环遍历数组A [](换句话说,i&lt; sizeof(A);或者[i]!='\ 0')
现在循环,就像数组A中有不同的字母一样
将字母数量存储在B []
中打印出来
现在有一些技巧应用于此但你可以处理它
答案 3 :(得分:0)
试试这个:
unsigned int frequency[26] = {0};
char letters[10];
letters
数组。frequency[toupper(new_letter) - 'A']++;