获取要调用函数 C++ 的变量

getting variables to call for a function c++

本文关键字:变量 C++ 函数 调用 获取      更新时间:2023-10-16

所以基本上我试图做一个程序来制定3-d世界中两点之间的距离。我正在尝试调用一个函数来执行称为距离的公式。但我的问题是试图获取所有 6 个变量的输入。可以一个接一个地完成,但这会使代码很大,而且有点多。因此,相反,尝试使用数组来接收值,但它出现了诸如"没有匹配函数来调用"距离浮点[6]"之类的错误

简单地说,im 试图使用数组接收 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;
}

您的函数被声明为接受 6 个浮点变量作为参数。如果需要使用数组调用它,请添加将数组作为参数的重载。类似的东西:

float distance(float a[]) {
  return distance(a[0], a[1], a[2], a[3], a[4], a[5]);
}

此函数仅调用具有六个参数的另一个版本。更好的选择是修改原始函数以将数组作为参数。

Ivalyo 已经解释了重载,但我想指出,如果你想计算两点之间的欧几里得距离,你的distance函数是不正确的。*运算符是乘法,而不是幂;正确的表达式可能如下所示

return sqrt(((ux - vx) * (ux - vx)) + ((uy - vy) * (uy - vy)) + ((uz - vz) * (uz - vz)));

我也跳过了临时变量,因为它不是必需的,我什至不确定"后赋值"是否有效C++。

您的代码存在几个问题:

  • 你说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));
    

    尽管这在技术上不正确:您需要将这些术语的平方。