Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 参数传递转换浮动错误_C++_Function_Parameter Passing - Fatal编程技术网

C++ 参数传递转换浮动错误

C++ 参数传递转换浮动错误,c++,function,parameter-passing,C++,Function,Parameter Passing,我在传递这个简单程序的参数时遇到了一个问题。在尝试编译此程序时,我遇到一个无法将“float*”转换为“float”参数“2”的错误,即无法将“void getDatastd::string,float,float,float,float”。有人知道我做错了什么吗?我一直在努力。注意:请忽略不推荐的东西,如systemPAUSE和其他一些东西。这是我的老师认为我编写代码的简单方式,这就是他希望我在这个程序中使用的方式。我知道getchar,并将其用于实践和最终工作。另外,这不应该影响程序,因为我

我在传递这个简单程序的参数时遇到了一个问题。在尝试编译此程序时,我遇到一个无法将“float*”转换为“float”参数“2”的错误,即无法将“void getDatastd::string,float,float,float,float”。有人知道我做错了什么吗?我一直在努力。注意:请忽略不推荐的东西,如systemPAUSE和其他一些东西。这是我的老师认为我编写代码的简单方式,这就是他希望我在这个程序中使用的方式。我知道getchar,并将其用于实践和最终工作。另外,这不应该影响程序,因为我以前在C++程序的小程序上使用它没有问题。

代码如下:

#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;

void getData(string,float,float,float,float);
void getCalc(int,float,float,float,float,float,float,float,float,float,float);
void getPrint(float,float,float);

int main()
{
 int const acres=1000;
 string crop;
 float cpa[4];
 float yield[4];
 float per[4];
 float increase[4];
 float cost[4];
 float grossmin[4];
 float grossmax[4];
 float netmin[4];
 float netmax[4];
 float netave[4];
 getData(crop,cpa,yield,per,increase);
 getCalc(acres,cpa,yield,per,increase,cost,grossmin,grossmax,netmin,netmax,netave);
 getPrint(netmin,netmax,netave);
 system("PAUSE");
 return 0;
}

void getData(string fcrop,float fcpa[],float fyield[],float fper[],float fincrease[])
{
 for (int i=0;i<4;i++)
 {
  cout<<"Enter the crop: ";
  getline(cin,fcrop);
  cout<<"Enter the cost per acre:$ ";
  cin>>fcpa[i];
  cout<<"Enter the yield: ";
  cin>>fyield[i];
  cout<<"Enter $/bishell: ";
  cin>>fper[i];
  cout<<"Enter the percentage increase: ";
  cin>>fincrease[i];
  cin.ignore(80,'\n');
 }
}

void getCalc(int acres,float fcpa[],float fyield[],float fper[],float fincrease[],float fcost[],float fgrossmin[],float fgrossmax[],float fnetmin[],float fnetmax[],float fnetave[])
{
 for (int i=0;i<4;i++)
 {
  int acres=1000;
  fcost[i]=acres*fcpa[i];
  fgrossmin[i]=acres*fyield[i]*fper[i];
  fgrossmax[i]=fgrossmin[i]+(fgrossmin[i]*fincrease[i]/100);
  fnetmin[i]=fgrossmin[i]-fcost[i];
  fnetmax[i]=fgrossmax[i]-fcost[i];
  fnetave[i]=(fnetmin[i]+fnetmax[i])/2;
 }
}

void getPrint(float fnetmin[],float fnetmax[],float fnetave[])
{
 for (int i=0;i<4;i++)
 {
  cout<<"The minumum profit is:$ "<<fnetmin[i]<<endl;
  cout<<"The maximum profit is:$ "<<fnetmax[i]<<endl;
  cout<<"The average profit is:$ "<<fnetave[i]<<endl;
 }
}

在您在程序开始时编写的原型中,这是编写的

void getData(string,float,float,float,float) ;
它应该与它的定义相同

void getData(string,float[],float[],float[],float[]);

函数原型的声明和实现应该是相同的。

在程序开始时编写的原型中,这是编写的

void getData(string,float,float,float,float) ;
它应该与它的定义相同

void getData(string,float[],float[],float[],float[]);

函数原型的声明和实现应该是相同的。

感谢您修复了它。我从未想过在原型设计时应该将它们指定为数组。是的,你应该这样做。声明和实现应该几乎完全匹配。@ LyeBoad,您会认为编译器会抱怨错配,但它不存在,因为C++只是认为它是两个不同的函数!标记参数名称不匹配?不是名称,而是类型。您通常不会在声明中提到变量名。谢谢您修复了它。我从未想过在原型设计时应该将它们指定为数组。是的,你应该这样做。声明和实现应该几乎完全匹配。@ LyeBoad,您会认为编译器会抱怨错配,但它不存在,因为C++只是认为它是两个不同的函数!标记参数名称不匹配?不是名称,而是类型。您通常不会在声明中提到变量名。我想您应该在getDate中使用float¶m[],因为您的fcpa、fyField。。。被复制到堆栈,返回后将被释放,我认为您希望稍后在main中使用它们的值。我想您应该在getDate中使用float¶m[],因为您的fcpa、fyField。。。被复制到堆栈中,返回后将被释放,我认为您希望稍后在main中使用它们的值。