两个数组之间的欧氏距离,未声明的标识符



我在计算欧几里得距离时有这个代码。但是,我不知道为什么会出现此错误。 array1 and array2 undeclared .

double dist(double x[4] array1, double y[4] array2)
{
    double Sum;
    double distance;
    for(int i=0;i<array1.length;i++)
    {
        cout<<"Enter value of first coordinate";
        cin >> array1[i];
        cout<<"Enter value of second coordinate";
        cin >> array2[i];
        Sum = Sum + pow((array1[i]-array2[i]),2.0);
        distance = sqrt(Sum);
    }
        cout << "DISTANCE: " << distance;
    return distance;
}

(该程序也可以用Java编写)

你没有正确声明你的函数。参数不遵循 c++ 语法。尝试

double dist(double array1[4], double array2[4])

如果您事先知道您只会传递大小为 4 的数组。如果值可以更改,但在编译时已知,则可以使用函数模板

template <size_t Size>
double dist(double (array1&)[Size], double (array2&)[Size])

或者,如果该值可能在运行时确定,并且您可以使用 STL,则只需使用 std::vector s。

注意:在平板电脑上编写的未经测试的代码。

编辑:差点忘了提一下,如果我没记错的话,与 java 不同,C++原始数组类型(另请参阅下面的 Keith 评论以及指向有关此主题的出色解释的链接)没有与之关联的方法(成员函数)。像array1.size()这样的语句对基元类型没有任何意义。当然,如果大小是硬编码的,则不需要它们。否则,请使用 std::vector

最新更新