【发布时间】:2018-12-18 20:24:30
【问题描述】:
我必须返回一个数组double* b,并将它与函数arrays_equal 中的double* a 进行比较。代码不起作用,测试失败。我把相关代码写在这里:
double* array_copy(/*IN*/ const double* a, int n) {
double *b;
b = xcalloc(n,sizeof(double));
for(int i = 0; i < n; i++){
*(b + i) = *(a + i);
printf("%.2f\n",b[i]);
}
printf("%.2f\n",b[0]);
return b;
}
我在这里写下我的测试函数,我必须从我的 array_copy 函数中得到 double* b1:
void array_copy_test(void) {
double a1[] = { 1.50, 2.30, 42.42 };
double* b1 = array_copy(a1, 3);
test_equal_b(arrays_equal(a1, b1, 3), true);
free(b1);
等价函数:
bool arrays_equal(/*IN*/ const double* a, /*IN*/ const double* b, int n) {
int j = 0;
for(int i = 0; i<= n; i++){
if(approx(*(a+i),*(b+i))){
j++;
}
}
if(n == j){
return true;
} else{return false;}
}
void arrays_equal_test(void) {
double a3[] = { 1.5, 2.3, 42.43 };
double b3[] = { 1.5, 2.3, 42.42 };
test_equal_b(arrays_equal(a3, b3, 3), false);
}
bool approx(double a, double b) {
return fabs(a - b) < 1e-6;
}
谁能告诉我,我的问题出在哪里?
【问题讨论】:
-
你还没有显示函数
test_equal_b。 -
test_equal_b的兴趣是什么,而arrays_equal可能返回 true 或 false ?比较真假? @Navidmsarrays_equal是如何实现的? -
你的相等性测试超出范围。
-
非常感谢。这是我的问题,我应该写 i
-
别难过,我们都犯过很多这样的错误。
标签: c arrays dynamic-memory-allocation