检查数组的出现次数并输出到新数组。 C

时间:2018-08-13 23:58:39

标签: c arrays

我需要遍历数组,在数组中查找数字的出现,然后将出现的次数输出到新数组中。

void create_hist(double input[], int num_of_inputs, int output[])
{
int num_to_check = input[0];
int counter = 0;

for (int i = 0; i < num_of_inputs; i++)
{
        if (input[i] == num_to_check)
        {
            counter++;  /* it was found */
        }
        output[i] = counter;    
}

return;
}

考虑输入内容包含input[3] ={0, 0 ,0}。输出应为output[3] = {3, 0, 0}

当前输出为output[3] = {1, 2, 3}-我是否需要创建另一个数组来保存每个循环的值,然后使其输出。我只是迷上了这个。

3 个答案:

答案 0 :(得分:0)

拳头问题: num_to _check应该为双精度,否则需要转换(如果要检查整数)数组元素。

由于浮点数不精确,恐怕==与比较整数时不一样

#define delta  xxxx /*some double value*/ 

void create_hist(double input[], int num_of_inputs, int output[])
{
double num_to_check = input[0];
int counter = 0;

for (int i = 0; i < num_of_inputs; i++)
{
        if (input[i] > num_to_check - delta && input[i] < num_to_check + delta)

void create_hist(double input[], int num_of_inputs, int output[])
{
int num_to_check = input[0];
int counter = 0;

for (int i = 0; i < num_of_inputs; i++)
{
        if ((int)input[i] == num_to_check)

void create_hist(double input[], int num_of_inputs, int output[])
{
int num_to_check = input[0];
int counter = 0;

for (int i = 0; i < num_of_inputs; i++)
{
        if ((int)round(input[i]) == num_to_check)

取决于您的程序逻辑。

答案 1 :(得分:0)

这里看到的问题是您的输入数组是{0,0,0},所以在开始时您已经将num_to_check初始化为0,因此当您第一次遍历for循环时,如果if条件为true ,这会使计数器增加1,在下一次迭代中,由于input[1]num_to_check均为0,因此if语句再次成立,因此计数器再次增加1,在上一次迭代中也是如此这就是您将输出作为{1,2,3}的原因。您无需创建其他数组,只需使用其他变量{{1来代替i下标中的output[i]即可。 }}并适当增加它。

答案 2 :(得分:0)

所以这适用于以上

void create_hist(double input[], int num_of_inputs, int output[])
{

int num_to_check = input[0];
int counter = 0;

for (int i = 0; i < num_of_inputs; i++)
{
    int j = output[i];
    if ((int)input[i] == num_to_check)
        {
            counter++;  /* it was found */
        }
        output[j] = counter;    
}

return;

另一个问题:如果我有浮点数组

input[5] = {0.0000, 1.0000, 2.0000, 3.0000, 4.000}

并且我想要然后将值截断为int,并计算输入数组中0-10范围内的每个整数出现多少次,然后将其输出到:

output[5] = {1, 1, 1, 1, 1}

我该怎么做。