【发布时间】:2014-09-14 02:33:08
【问题描述】:
考虑这段代码:
double dist(double x[3], double y[3])
{
double Sum;
double distance;
for(int i=0; i<3; i++)
{
cout << "Enter value of first coordinate";
cin >> x[i];
cout << "Enter value of second coordinate";
cin >> x[i];
Sum = Sum + pow((x[i] - x[i]), 2.0);
distance = (int)sqrt(Sum);
}
cout << "DISTANCE: " << distance;
return distance;
}
int main()
{
int i, n;
double x[3]; double y[3];
cout << "enter number of test case" << endl;
cin >> n;
for(i=0; i<n; i++)
{
dist(x[i], y[i]);
}
return 0;
}
在dist(x[i], y[i])这行一直报错
无法将参数 '1' 的 'double' 转换为 'double*' 到 'double dist(double*, double*)'
【问题讨论】:
-
Sum = Sum + pow((x[i]-x[i]),2.0);您使用了两次x[i]。你是这个意思吗? -
dist需要一个包含三个双精度值的数组。x[i]只是一个双精度值。 -
@IgorTandetnik 从技术上讲,
dist需要两个指向doubles 的指针。3毫无意义。 -
@T.C.我知道。我试图避免增加已经大量存在的混乱。此外,说
dist期望一个包含三个双精度数的数组作为其合同的一部分也许是正确的,无论这一事实在其签名中表达得多么好。 -
Sum也需要初始化。
标签: c++