获取变量来调用函数c ++

时间:2014-03-31 19:24:53

标签: c++

所以基本上我试图做一个程序,在三维世界中形成两点之间的距离。我试图调用函数来执行名为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;
}

3 个答案:

答案 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));
    

    虽然这在技术上并不正确:您需要采用这些术语的平方。