获取要调用函数 C++ 的变量
getting variables to call for a function c++
所以基本上我试图做一个程序来制定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));
尽管这在技术上不正确:您需要将这些术语的平方。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 通过多个头文件使用常量变量
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 执行函数时导致崩溃的变量
- 变量没有改变?通过向量的函数调用