下面是计算距离的代码

// creating array of cities
double x[] = {21.0,12.0,15.0,3.0,7.0,30.0};
double y[] = {17.0,10.0,4.0,2.0,3.0,1.0};

// distance function - C = sqrt of A squared + B squared

最佳答案

一个问题是order of operations弄乱了您(乘法运算在减法之前完成)

更改

(x[c1] - x[c2] * x[c1] - x[c2]) + (y[c1] - y[c2] * y[c1] - y[c2])




((x[c1] - x[c2]) * (x[c1] - x[c2])) + ((y[c1] - y[c2]) * (y[c1] - y[c2]))


为了清楚起见,我还建议在单独的行中进行一些计算(显然,这是我更喜欢的样式选择,并且我敢肯定有些人会不同意)。尽管它对编译器没有影响

double deltaX = x[c1] - x[c2];
double deltaY = y[c1] - y[c2];

double distance = sqrt(deltaX * deltaX + deltaY * deltaY);


我认为这使得代码更具可维护性(并且在这种情况下更不会出错)。请注意,如前所述,操作顺序不需要额外的括号。

关于c++ - 计算距离,但结果是-2147483648,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9742202/

10-11 22:47
查看更多