C++ 从C+中的函数输出多个值+;

C++ 从C+中的函数输出多个值+;,c++,function,struct,C++,Function,Struct,我对编程非常陌生,我正在尝试构建一个代码来完成以下任务: 1) 返回方程式的两个短函数。 2) 在另一个函数中使用这两个方程,该函数将计算某些内容并返回两个变量。 3) 然后,main将位于另一个文件中,该文件将使用步骤2中描述的函数输出的两个值 目前,我在一个文件中有步骤1和2,函数2是主要的。我记得以前尝试过这样做,你不能用这种方式调用多个函数。我想我必须制作一个具有所有必要功能的头文件?不过我不确定。另外,我认为我需要创建一个结构来将值输出到函数2 我已包括以下部分代码: #include

我对编程非常陌生,我正在尝试构建一个代码来完成以下任务:

1) 返回方程式的两个短函数。 2) 在另一个函数中使用这两个方程,该函数将计算某些内容并返回两个变量。 3) 然后,main将位于另一个文件中,该文件将使用步骤2中描述的函数输出的两个值

目前,我在一个文件中有步骤1和2,函数2是主要的。我记得以前尝试过这样做,你不能用这种方式调用多个函数。我想我必须制作一个具有所有必要功能的头文件?不过我不确定。另外,我认为我需要创建一个结构来将值输出到函数2

我已包括以下部分代码:

#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std; 

//Solution to the linear dispersion relationship for a horizontal bottom. 
//Shallow Water Solution only

double f (double, double, double, double);
double df (double, double, double);

//Below is the struct I will then fill with the values calculated from 
//linear dispersion function
struct wave_info {
  double kn, L;
}

double linear_dispersion (double f, double df) {    
  // Deleted code...
  return kn;    
}

//Linear dispersion relation
double f(double kn, double omega, double g, double h) {
    return f;
}

//Differential of Linear dispersion relation. Necessary for N-R method
double df(double kn, double g, double h) {
    return df;
}
#包括
#包括
#包括
使用名称空间std;
//水平底部线性色散关系的解。
//仅浅水溶液
双f(双,双,双,双);
双df(双,双,双);
//下面是一个结构,我将用从中计算的值填充它
//线性色散函数
结构波信息{
双千牛,L;
}
双线性色散(双f,双df){
//删除的代码。。。
返回千牛;
}
//线性色散关系
双f(双kn,双Ω,双g,双h){
返回f;
}
//线性色散关系的微分。N-R方法的必要性
双df(双kn、双g、双h){
返回df;
}
主要问题是:

#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std; 

int main () {
/*
 * Use values for wavelength (L) and wave number (k) calculated from linear 
 * dispersion program
 * 
 */

  // Deleted code ...

  return 0;

}
#包括
#包括
#包括
使用名称空间std;
int main(){
/*
*使用根据线性方程计算的波长(L)和波数(k)值
*分散程序
* 
*/
//删除的代码。。。
返回0;
}
我删除了代码主体,因为我不知道如何以这种方式调用函数。我的main只需要使用在线性_色散函数中计算的两个值。我不知道如何使用函数f和df正确调用线性_色散函数

另外,代码可以工作,但我无法将以线性_离散度计算的值引入我的主代码中


提前感谢您的帮助!如果您需要更多信息或有什么不清楚的地方,请告诉我

如果我正确理解您的需求,您可以使用自定义结构或内置

e、 g:

结构波{ int k; int L; }; wave foo(){ //这里有一些更智能的计算:) 返回{5,6}; } std::pair foo2(){ //这里有一些更智能的计算:) 返回std::生成_对(4,5); } int main(){ 波w=foo(); std::pair a=foo2();
cout如果我正确理解您的需求,您可以使用自定义结构或内置

e、 g:

结构波{ int k; int L; }; wave foo(){ //这里有一些更智能的计算:) 返回{5,6}; } std::pair foo2(){ //这里有一些更智能的计算:) 返回std::生成_对(4,5); } int main(){ 波w=foo(); std::pair a=foo2(); cout您可以使用从函数中获取多个值。 示例代码如下:

void linear_dispersion (double &f, double &df) //return type void
{
double a , b, c , d;
f = f(a,b,c,d); 
df = df(a,b,c,d);

}

main()
{
double val1 , val2;
linear_dispersion (val1, val2);

cout<<val1<<","<<val2; //changed val1 & val2
}
void线性离散(double&f,double&df)//返回类型void
{
双a、b、c、d;
f=f(a,b,c,d);
df=df(a,b,c,d);
}
main()
{
双val1,val2;
线性色散(val1,val2);
cout您可以使用从函数中获取多个值。
示例代码如下:

void linear_dispersion (double &f, double &df) //return type void
{
double a , b, c , d;
f = f(a,b,c,d); 
df = df(a,b,c,d);

}

main()
{
double val1 , val2;
linear_dispersion (val1, val2);

cout<<val1<<","<<val2; //changed val1 & val2
}
void线性离散(double&f,double&df)//返回类型void
{
双a、b、c、d;
f=f(a,b,c,d);
df=df(a,b,c,d);
}
main()
{
双val1,val2;
线性色散(val1,val2);

你总是可以使用引用传递从一个函数输出多个值。我想我回答了“两个返回值”部分,但我对如何使用函数f和df正确调用线性_离散函数感到困惑。有点困惑,你能澄清一下吗?你总是可以使用pass by reference从一个函数输出多个值。我想我确实回答了“两个返回值”部分,但我对如何使用函数f和df正确调用线性_色散函数感到困惑。有点困惑,你能澄清一下吗?好的,我想你确实理解了我的问题…再问几个问题(很抱歉,我花了一段时间回信)…这些问题可能很愚蠢,但当你说return{5,6}时,我还是个傻瓜我假设5和6对应于k和L?或者它们是其他的吗?2)我不知道std::pair命令,现在将查找它。从您的解释中,我认为我理解它的方式是,它将返回的值分组在一起作为一个主对使用?在这种情况下,函数foo()之间的区别是什么和std::pair?谢谢你的帮助没关系,我真的认为你应该看一下演示…:)1)是的,你是正确的,正如你在调用
wave w=foo()后在演示中看到的那样
打印
w.k
w.L
分别产生
56
。2)
std::pair
不是一个命令,而是一个内置类。请澄清这一点:函数foo()之间的区别是什么和std::pair。正如我所说,
std::pair
是一个类,
std::make_pair
是一个函数,可以方便地创建这个类的实例。
foo
返回一个
wave
结构,
foo2
返回两个
int
对。您可以在好的,我想我明白了…所以使用std::pair并对我想要返回的值进行配对,这样当我使用make_pair返回时,它类似于输出两个变量的结构,只是不同的方法!希望这是对的!我想我现在明白了怎么做了,谢谢你的帮助。好的,我想你确实明白我的意思了国王……还有几个问题(对不起,我花了一点时间写这封信)