我正在使用xcode v.4.5.1并尝试使用距离公式计算两点之间的距离(sqrt((x1-x2)^ 2 +(y1-y2)^ 2))用于C ++项目但由于某种原因,我的价值观没有被平方。为什么会发生这种情况?如何对值进行平方?
来源这里是点对象的向量。我正在使用的向量是(3,4)(6,8)(50,8)(11,7)。如果我在末尾打印source[i]
,source[i+1]
或source[j]
.x()
或.y()
,则会打印出来并打印出来{{1等等,值是正确的。但是,一旦我添加“^ 2”,打印的值都是错误的。
例如,
source[i].x()-source[i+1].x()
BUT
cout<< source[i].y(); shows 4 8 8 7 (when looped over i)
当p = 1时,显示1
以下是我的包含:
cout<< sqrt((source[i].x()-source[i+1].x())^2 + (source[i].y()-source[i+1].y())^2);
以下是不为我设置值的代码部分:
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include "Point.h"
答案 0 :(得分:2)
在C ++中,^
是eXclusive OR运算符,而不是平方运算符。请阅读您的C ++参考资料。
答案 1 :(得分:2)
如果你想通过电源提高你的答案,在你的情况下,你正在平方,你需要使用pow功能。
要了解有关该功能的更多信息,可以在Terminal.app应用程序中键入“man pow”。
因此,对于一行,您可能希望将其更改为:
double d1 = sqrt(
pow ( (source[i].x()-source[i+1].x()), 2 )
+
pow( (source[i].y()-source[i+1].y()), 2 ) );