This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center
                            
                        
                    
                
                                6年前关闭。
            
                    
我正在使用xcode v.4.5.1,尝试为C ++项目使用距离公式(sqrt((x1-x2)^ 2 +(y1-y2)^ 2))计算两点之间的距离我的价值观没有平方的原因。为什么会发生这种情况,我如何平方一个值?

这里的源是点对象的向量。我正在使用的向量是(3,4)(6,8)(50,8)(11,7)。如果我以source[i]source[i+1]结尾打印source[j].x().y(),它们都将正确打印,而当我打印source[i].x()-source[i+1].x()等时,这些值是正确的。但是,一旦我添加“ ^ 2”,打印的值都是错误的。

例如,

cout<< source[i].y();  shows 4 8 8 7 (when looped over i)




cout<< sqrt((source[i].x()-source[i+1].x())^2 + (source[i].y()-source[i+1].y())^2);


当i = 1时显示1

这是我的包括:

#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include "Point.h"


这是代码的一部分,不会为我平方值:

void function(vector<Point>& source){
    if(source.size()>3){
        for(int i=0; i<n+2; i++){
            for(int j=i+2; j<n; j++){
                double d1 = sqrt((source[i].x()-source[i+1].x())^2 + (source[i].y()-source[i+1].y())^2);
                double d2 = sqrt((source[i].x()-source[j].x())^2 + (source[i].y()-source[j].y())^2);
                if( d1 > d2){
                    swap( source[i+1], source[j] );
                }
            }
        }
    }

最佳答案

当您想用平方幂的方法提高答案时,您需要使用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 ) );

07-24 09:46
查看更多