Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 最近点实现_C++ - Fatal编程技术网

C++ 最近点实现

C++ 最近点实现,c++,C++,我正在尝试实施一个最近点程序。代码如下: #include <iostream> #include <cstdlib> #include <math.h> using namespace std; float randfloat(){ return 1.0*rand()/RAND_MAX; } class point { public : float x,y; float distance(point& a){

我正在尝试实施一个最近点程序。代码如下:

#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;

float randfloat(){
    return 1.0*rand()/RAND_MAX;
}

class point
{
    public :
    float x,y;

    float distance(point& a){
        float dx=x-a.x;
        float dy=y-a.y;
        return  sqrt(dx*dx+dy*dy);
    }
};

int main(int argc,char* argv[]){
    int i,cnt=0;
    int n=atoi(argv[1]);
    float d=atof(argv[2]);
    point *a=new point[n];
    for (int i=0;i<n;i++)
    {
        a[i].x=randfloat();
        a[i].y=randfloat();
    }
    for (i=0;i<n;i++)
        for (int j=i+1;j<n;j++)
            if ((distance(a[i],a[j])<d)) cnt++;
    cout << cnt << "pairs within" << d << endl;

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
float和float(){
返回1.0*rand()/rand_MAX;
}
类点
{
公众:
浮动x,y;
浮动距离(点和a){
浮动dx=x-a.x;
浮动dy=y-a.y;
返回sqrt(dx*dx+dy*dy);
}
};
int main(int argc,char*argv[]){
int i,cnt=0;
int n=atoi(argv[1]);
float d=atof(argv[2]);
点*a=新点[n];

对于(int i=0;i我相信您使用了错误的
distance()
函数。我相信您的意思是

a[i]。距离(a[j])

而不是


距离(a[i],a[j])
您应该调用表单中的成员函数

a[i].distance(a[j])
您看到的问题是,有一个内置函数名为,它需要两个迭代器。由于
point
不是迭代器,编译器会抛出这些听起来完全不相关的错误


(顺便说一句,由于
.distance()
不修改参数,最好将其声明为
浮点距离(const-point&a)const

因为您将
距离
声明为
的成员函数,所以应该调用它

           if ((a[i].distance(a[j])<d)) cnt++;

if((a[i].distance(a[j])对不起,你知道壁橱是什么,对吧?有趣的是,你甚至在cpp文件中有输入错误:)你可能想更正这个。除此之外,我认为应该是[i].distance(a[j])而不是distance(a[i],a[j])
           if ((a[i].distance(a[j])<d)) cnt++;