C 合并排序后无法打印双精度数字数组

C 合并排序后无法打印双精度数字数组,c,mergesort,data-files,C,Mergesort,Data Files,请帮助,不断出现这些错误 main.cpp: In function ‘int main()’: main.cpp:177:25: error: cannot convert ‘int*’ to ‘double*’ for argument ‘1’ to ‘void printArray(double*, double)’ printArray(arr, arr_size); main.cpp:179:31: error: cannot convert ‘int*’ to ‘doubl

请帮助,不断出现这些错误

main.cpp: In function ‘int main()’:


main.cpp:177:25: error: cannot convert ‘int*’ to ‘double*’ for argument ‘1’ to ‘void printArray(double*, double)’
 printArray(arr, arr_size);


main.cpp:179:31: error: cannot convert ‘int*’ to ‘double*’ for argument ‘1’ to ‘void mergeSort(double*, int, int)’
 mergeSort(arr, 0, arr_size - 1);
                               ^


main.cpp:183:25: error: cannot convert ‘int*’ to ‘double*’ for argument ‘1’ to ‘void printArray(double*, double)’
 printArray(arr, arr_size);


代码:

#包括
#包括
#包括
无效合并(双arr[],整数l,整数m,整数r)
{
int i,j,k;
int n1=m-l+1;
int n2=r-m;
int L[n1],R[n2];
对于(i=0;i如果(L[i]你的数组是
int
类型。你的函数需要一个指向
double
的指针。对数组和函数使用
int
double
。不要混合使用。行

fscanf(fp, "%d", &data);

读取整数,因此您可能应该在代码中的任何地方使用数据类型
int

请在此处发布之前格式化您的代码。如果您的IDE/编辑器不支持代码格式化,您可以使用小心。您已经避免了最常见的问题,但没有避免一些更微妙的问题。再次考虑,您没有成功地类似的问题。C++中不允许使用诸如<代码> int L[N1,r[n2]; >的可变长度数组。代码看起来更像C,所以我更改了标签。我已经将“%d”改为“%LF”。但它给出的数组是43.720000 60.300000 27.370000使用合并排序的排序数组为27.000000 30.000000。它打印出0,并且不在小数后显示数字。@maya然后您必须在代码中的任何地方使用
double
。为什么要读取包含 %d
并将值存储在整数数组中?好的,谢谢,排序工作正常。但小数点后的额外零仍然存在。有什么建议吗。@maya将
arr
定义为
int
的数组,但在函数中,您说它应该是一个
双[]
。请与您的类型保持一致,或者使用all
int
或all
double
@maya。您应该阅读有关设置输出格式的内容。您可以尝试
printf(“%lf.0”,A[i]);
fscanf(fp, "%d", &data);