问题描述
我试图在线检查资源,但似乎并没有设法将结果从一个函数传递到第二个函数。我编写了一个程序来求解二次公式,需要使用判别式(在第一个函数 calculatediscriminant 中返回)作为第二个函数( quadraticFormula )的参数。我该如何解决? 预先感谢!
Error opening data file
garbage_path_that_will_cause_init_to_issue_errors_to_the_cmd_line/eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.
Failed loading language 'eng'
Tesseract Couldn't load any languages!
解决方法
您正在混合使用声明函数的语法和调用函数的语法。但这是完全不同的事情,请尝试
double discriminant = calculateDiscriminant(a,b,c);
这样想吧,当您对一个函数进行十进制化时,必须告诉编译器所有类型,所以
double calculateDiscriminant(double a,double b,double c) {
告诉编译器calculateDiscriminant
是具有double
参数的函数,该函数还返回double
。现在,您已经告诉编译器,您不必在每次调用该函数时都重复这些信息,所以
calculateDiscriminant(a,c)
只需即可调用该函数。奇怪的是,您在程序中的所有其他函数调用中都拥有正确的功能,因此我不确定为什么您尝试在此处进行不同的操作。
您还有其他错误。在main
中
double discriminant;
cout << "Please enter the values of a,and c: " << endl;
cin >> userInput1 >> userInput2 >> userInput3;
calculateDiscriminant(userInput1,userInput2,userInput3);
quadraticFormula(discriminant,userInput1,userInput3);
应该是这个
cout << "Please enter the values of a,and c: " << endl;
cin >> userInput1 >> userInput2 >> userInput3;
quadraticFormula(userInput1,userInput3);
不确定为什么要尝试两次致电calculateDiscriminant
。您不需要。
还有这个
void quadraticFormula(double discriminant,double a,double c) {
应该是这个
void quadraticFormula(double a,double c) {
您正在计算quadraticFormula
函数中的判别式,因此也不需要将其作为参数传递。
您应该从逻辑上考虑函数参数。计算二次公式的函数需要三个参数,二次方程中三个项的系数。如果发现自己编写的二次公式函数需要四个参数,则说明您做错了。这很简单,与C ++无关。
,void quadraticFormula(double a,double c) '
//您不需要第四个参数
{
double result1;
double result2;
double result3;
double var1=a; //here
double var2=b; //here
double var3=c; //here
//将值从参数分配给变量
`double discriminant1=calculateDiscriminant(var1,var2,var3);`
///仅将值传递给功能 calculateDiscriminant()
if (discriminant1 > 0) {
result1 = (-var2 + sqrt(discriminant1))/(2 * var1);
result2 = (-var2 - sqrt(discriminant1))/(2 * var1);
cout << "There are 2 solutions." << endl;
cout << "The solutions are: " << result1 << " and " << result2;
}
else if (discriminant1 == 0) {
result3 = (-var2)/(2 * var1);
cout << "There is 1 solution." << endl;
cout << "The solution is: " << result3;
}
else if (discriminant1 < 0) {
cout << "There is no solution.";
} }