如何将双阵列转换为C中的整数数组



我有一个组成的阵列,我需要将其四舍五入并转换为整数,以便我可以将它们用作输出数组中的索引。我刚刚开始启动C编程,不确定这是如何工作的。到目前为止,我能想到的最好的是:

int create_hist( double input_array[], int count, int output_array[17] ) {
    for ( int i = 0; i < count; i++ ) {
        input_array[i] = int floor(input_array[i]);
        output_array[input_array[i]]++; 

但是,我遇到了以下错误,我遇到了麻烦:

array.c:11:20: error: expected expression before ‘int’
   input_array[i] = int floor(input_array[i]);
                    ^
array.c:12:7: error: array subscript is not an integer
   hist[input_array[i]]++;
       ^
array.c:14:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^

如果有人可以让我知道我出了什么问题,将不胜感激。

,除非您实际想修改input_array,否则最好将圆形的双重折断在中间变量中保存,以访问整数阵列。而且无需使用floor()double铸造为int

int create_hist(double input_array[], int count, int output_array[17]) {

    for (int i = 0; i < count; i++) {
        int index = (int)input_array[i];
        if ((index > 16) || (index < 0)) {
            return -1;
        }
        output_array[index]++;
    }
    return 0;
}

当然,您也应该真正以output_array的大小作为变量,而不是对其进行硬编码。

,让我们开裂:

第一个错误是由于您正在声明函数的事实。

input_array[i] = int floor(input_array[i]);

请注意,在地板前的int,这不是必需的。应该是

input_array[i] = floor(input_array[i]);

第二个错误是由于您使用

中的 double访问数组元素。
output_array[input_array[i]]++;

您要么应该以其他方式进行操作,要么做以下操作:

output_array[(int) input_array[i]]++;

,第三个错误是不平衡的括号。

最新更新