检查数组中的值,然后传递到新数组。 C

时间:2018-08-14 02:05:47

标签: c arrays

因此给定了一个数组:

input[3] = {0, 0, 0}

此输出:

output[3] = {3, 0 ,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}

output[0] = {1} //indicates how many times 0 appeared in the array

input[10] = {1.000, 4.000, 5.0000, 2.000, 4.000, 7.000, 9.000, 6.000, 0.000, 0.000}

并输出

output[10] = {2, 1, 1, 0, 2, 1, 1, 1, 0, 1}

output[0] = {2} // this indicates how many times 0 appeared in the first array

谁能告诉我该怎么做?

1 个答案:

答案 0 :(得分:2)

您不应使用output[i]作为数组索引。它是一个计数器,而不是您想要计数的值。您应该使用(int)input[i]作为索引。

首先需要将output的所有元素初始化为0,然后递增与每个输入的整数部分相对应的元素。

memset(output, 0, sizeof(output[0]) * MAX_INPUT_VALUE);
for (int i = 0; i < num_of_inputs; i++) {
    output[(int)input[i]]++;
}