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