-1

我一直在思考很长一段时间,并没有得到程序的任何地方。我不知道从哪里开始。分配需要使用单个函数 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 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;
               }
     }
    }
}
4

4 回答 4

2

算法 2:std::map
声明/定义容器:

std::map<char, unsigned int> frequency;
  1. 打开文件
  2. 读一封信。
  3. 找到这封信: frequency.find(letter)
  4. 如果字母存在,增加频率:频率[字母]++;
  5. 如果不存在字母,则插入频率:频率[字母] = 1;
  6. 处理完所有字母后,遍历map显示字母及其频率。
于 2012-12-09T21:58:33.460 回答
0

在这里,我会告诉你应该做什么,你自己编写代码:

包含头文件(stdio libs)

定义 main (您的应用程序的入口点)

声明输入数组 A[amount_of_chars_in_your_input]

写输出请求用户输入

收集输入

现在主要部分:

声明另一个无符号短裤数组 B[]

声明计数器 int i = 0

声明计数器 int j = 0

遍历数组 A[] (换句话说 i < sizeof ( A ); 或 a[i] != '\0' )

现在循环尽可能多的数组 A 中有不同的字母

在 B[] 中存储字母的数量

打印出来

现在有一些技巧可以应用它,但你可以处理它

于 2012-12-09T21:09:02.167 回答
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)

你完成了。您现在可以知道每个字符在输入中出现的次数。

于 2012-12-09T20:55:27.320 回答
0

尝试这个:

unsigned int frequency[26] = {0};
char         letters[10];

算法:

  1. 打开文件/阅读一封信。
  2. 在数组中搜索letters新字母。
  3. 如果新字母存在:增加该字母的频率槽: frequency[toupper(new_letter) - 'A']++;
  4. 如果缺少新字母,则添加到数组并将频率设置为 1。
  5. 处理完所有字母后,打印出频率数组:`cout << 'A' + index << ": " << frequency[index] << endl;
于 2012-12-09T21:52:21.090 回答