下面是计算距离的代码
// 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/