比较C中的两个数组
Compare two arrays in C
我有两个数组
double A[2][4] = {
{9, 10, 11, 12.0},
{13 14 15 16.3}
};
double B[2][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16},
{17, 18, 19, 20}
};
我想看看两个数组中的某些元素是否近似。
假设如果 A[:,2:4] ~ B[:,2:4],我希望程序打印行号。这是我的方法:
for (i = 0; i < 2; i++) {
for (k = 0; k < 5; k++) {
if (A[i][3] - B[k][3] < abs(0.5) && A[i][4] - B[k][4] < abs(0.5)) {
printf("row %d\n",k);
}
}
}
但它并不如我所愿。
请告诉我我必须做什么?
非常感谢
您的程序存在多个编译问题:
声明数组时 A
你漏掉了一些逗号:
{13 14 15 16.3}
-> {13, 14, 15, 16.3}
声明数组时 B
您定义的大小不正确:
double B[2][4]
-> double B[5][4]
您没有在函数中声明 i
和 k
你的范围不对,k < 4
应该是第二个循环的条件
您的 abs
方法将不起作用,因为 return 值是整数,而不是双精度数。使用 fabs
代替
修复所有这些问题后,程序将编译并运行。输出为:
> ./main
row 3
各种问题。
int abs(int)
以下与abs()
相同是一个int
函数:
A[i][3] - B[k][3] < abs(0.5)
A[i][3] - B[k][3] < 0
OP 可能想以不同的方式使用浮点函数 fabs()
。
fabs(A[i][3] - B[k][3]) < 0.5
范围
k
超出范围。
// for (k = 0; k < 5; k++) {
for (k = 0; k < 4; k++) {
我有两个数组
double A[2][4] = {
{9, 10, 11, 12.0},
{13 14 15 16.3}
};
double B[2][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16},
{17, 18, 19, 20}
};
我想看看两个数组中的某些元素是否近似。 假设如果 A[:,2:4] ~ B[:,2:4],我希望程序打印行号。这是我的方法:
for (i = 0; i < 2; i++) {
for (k = 0; k < 5; k++) {
if (A[i][3] - B[k][3] < abs(0.5) && A[i][4] - B[k][4] < abs(0.5)) {
printf("row %d\n",k);
}
}
}
但它并不如我所愿。 请告诉我我必须做什么? 非常感谢
您的程序存在多个编译问题:
声明数组时
A
你漏掉了一些逗号:{13 14 15 16.3}
->{13, 14, 15, 16.3}
声明数组时
B
您定义的大小不正确:double B[2][4]
->double B[5][4]
您没有在函数中声明
i
和k
你的范围不对,
k < 4
应该是第二个循环的条件您的
abs
方法将不起作用,因为 return 值是整数,而不是双精度数。使用fabs
代替
修复所有这些问题后,程序将编译并运行。输出为:
> ./main
row 3
各种问题。
int abs(int)
以下与abs()
相同是一个int
函数:
A[i][3] - B[k][3] < abs(0.5)
A[i][3] - B[k][3] < 0
OP 可能想以不同的方式使用浮点函数 fabs()
。
fabs(A[i][3] - B[k][3]) < 0.5
范围
k
超出范围。
// for (k = 0; k < 5; k++) {
for (k = 0; k < 4; k++) {