C ++将函数的结果传递给另一个函数

时间:2020-09-16 18:17:33

标签: c++ function quadratic

我试图在线检查资源,但似乎并没有设法将结果从一个函数传递到第二个函数。我编写了一个程序来求解二次公式,需要使用判别式(在第一个函数 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!

2 个答案:

答案 0 :(得分:1)

您正在混合使用声明函数的语法和调用函数的语法。但这是完全不同的事情,请尝试

double discriminant = calculateDiscriminant(a, b, c);

这样想吧,当您对一个函数进行十进制化时,必须告诉编译器所有类型,所以

double calculateDiscriminant(double a, double b, double c) {

告诉编译器calculateDiscriminant是具有double参数的函数,该函数还返回double。现在,您已经告诉编译器,您不必在每次调用该函数时都重复这些信息,所以

calculateDiscriminant(a, b, c)
只需

即可调用该函数。奇怪的是,您在程序中的所有其他函数调用中都拥有正确的功能,因此我不确定为什么您尝试在此处进行不同的操作。

您还有其他错误。在main

double discriminant;

cout << "Please enter the values of a, b, and c: " << endl;
cin >> userInput1 >> userInput2 >> userInput3;

calculateDiscriminant(userInput1, userInput2, userInput3);
quadraticFormula(discriminant, userInput1, userInput2, userInput3);

应该是这个

cout << "Please enter the values of a, b, and c: " << endl;
cin >> userInput1 >> userInput2 >> userInput3;

quadraticFormula(userInput1, userInput2, userInput3);

不确定为什么要尝试两次致电calculateDiscriminant。您不需要。

还有这个

void quadraticFormula(double discriminant, double a, double b, double c) {

应该是这个

void quadraticFormula(double a, double b, double c) {

您正在计算quadraticFormula函数中的判别式,因此也不需要将其作为参数传递。

您应该从逻辑上考虑函数参数。计算二次公式的函数需要三个参数,二次方程中三个项的系数。如果发现自己编写的二次公式函数需要四个参数,则说明您做错了。这很简单,与C ++无关。

答案 1 :(得分:-2)

void quadraticFormula(double a, double b, 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.";
    } }