我在计算欧几里得距离时有这个代码。但是,我不知道为什么会出现此错误。 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
。