【问题标题】:getting variables to call for a function c++获取变量以调用函数c ++
【发布时间】:2014-03-31 19:24:52
【问题描述】:

所以基本上我试图做一个程序来制定 3-d 世界中两点之间的距离。我正在尝试调用一个函数来执行名为距离的公式。但我的问题是尝试获取所有 6 个变量的输入。可以一个一个地完成,但这会使代码变大而且有点多。所以改为尝试使用数组来获取值,但它会出现错误,例如“没有匹配函数来调用'distance float [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;
}

【问题讨论】:

  • 该函数接受六个double 类型的参数,而不是doubles 的数组。
  • 这确实需要一个简单的 3D 点类。

标签: c++


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      您的代码有几个问题:

      • 你说distance 需要六个doubles,但给了它一个完整的数组。要么更改其签名,要么一一传递。

      • 语法

        sqrt (((ux - vx) * 2) + ((uy - vy) * 2) + ((uz - vz) * 2)) = float dist;

        没有意义。你的意思是

        float dist = sqrt (((ux - vx) * 2) + ((uy - vy) * 2) + ((uz - vz) * 2));
        

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-15
        • 2022-01-03
        • 1970-01-01
        • 2016-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多