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

时间:2014-01-15 00:21:15

标签: c++ euclidean-distance

我有这个代码来计算欧氏距离。但是,我不知道为什么我会遇到这个错误。 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编写)

1 个答案:

答案 0 :(得分:1)

您没有正确声明您的功能。参数不遵循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