所以基本上我试图做一个程序,在三维世界中形成两点之间的距离。我试图调用函数来执行名为distance的公式。但我的问题是试图获得所有6个变量的输入。可以一个接一个地完成它,但这会使代码变大并且有点多。因此,尝试使用数组来接收值,但它会出现错误,例如没有匹配函数来调用距离浮点数[6]'
简单地说我试图使用数组接收6个变量然后将它们发送到函数以找到它们之间的距离
#include <iostream>
#include <cctype>
#include <stdio.h>
#include <math.h>
using namespace std;
float distance(float ux, float uy, float uz,
float vx, float vy, float vz);
int main()
{
float number = 0.0f;
float loopArray[] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
cout << "Enter x,y,z of first coordinates to find distance between x,y,z second cordinates" << endl;
for (int i = 0; i < 6; i++)
{
cin >> number;
loopArray[i] = number;
}
distance(loopArray);
}
float distance(float ux, float uy, float uz,
float vx, float vy, float vz);
{
sqrt (((ux - vx) * 2) + ((uy - vy) * 2) + ((uz - vz) * 2)) = float dist;
return dist;
}
答案 0 :(得分:4)
声明您的函数将6个浮点变量作为参数。如果需要使用数组调用它,请添加一个以数组作为参数的重载。某种东西:
float distance(float a[]) {
return distance(a[0], a[1], a[2], a[3], a[4], a[5]);
}
此函数只调用具有六个参数的其他版本。更好的选择是修改原始函数以将数组作为参数。
答案 1 :(得分:1)
Ivalyo已经解释了重载,但是我想指出,如果你想计算两点之间的欧几里德距离,你的distance
函数是不正确的。 *
运算符是乘法运算,而不是取幂运算;正确的表达式可能类似于
return sqrt(((ux - vx) * (ux - vx)) + ((uy - vy) * (uy - vy)) + ((uz - vz) * (uz - vz)));
我也跳过了临时变量,因为它没有必要,我甚至不确定“post-assignment”是否是有效的C ++。
答案 2 :(得分:1)
您的代码存在一些问题:
你说distance
需要六个double
,但是给了它一整套。要么改变签名,要么逐一传递。
语法
sqrt (((ux - vx) * 2) + ((uy - vy) * 2) + ((uz - vz) * 2)) = float dist;
毫无意义。你的意思是
float dist = sqrt (((ux - vx) * 2) + ((uy - vy) * 2) + ((uz - vz) * 2));
虽然这在技术上并不正确:您需要采用这些术语的平方。