Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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++;传递函数';将结果转换为另一个函数_C++_Function_Quadratic - Fatal编程技术网

C++ C++;传递函数';将结果转换为另一个函数

C++ C++;传递函数';将结果转换为另一个函数,c++,function,quadratic,C++,Function,Quadratic,我曾尝试在线查看资源,但似乎无法将某个函数的结果传递到第二个函数。我编写了一个程序来求解二次公式,需要使用判别式(在第一个函数CalculatedDescriminant中返回)作为第二个函数(二次公式)的参数。我怎样才能解决这个问题? 提前谢谢 #include <iostream> #include <cmath> using namespace std; double calculateDiscriminant(double a, double b, doub

我曾尝试在线查看资源,但似乎无法将某个函数的结果传递到第二个函数。我编写了一个程序来求解二次公式,需要使用判别式(在第一个函数CalculatedDescriminant中返回)作为第二个函数(二次公式)的参数。我怎样才能解决这个问题? 提前谢谢

#include <iostream>
#include <cmath> 
using namespace std;


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

    discriminant = pow(b,2) - (4 * a * c);
    
    return discriminant;
     }

void quadraticFormula(double discriminant, double a, double b, double c) {
    double result1;
    double result2;
    double result3;
    double discriminant = calculateDiscriminant(double a, double b, double c); //I feel my problem lies here
   

    if (discriminant > 0) {
        result1 = (-b + sqrt(discriminant))/(2 * a);
        result2 = (-b - sqrt(discriminant))/(2 * a);
        cout << "There are 2 solutions." << endl;
        cout << "The solutions are: " << result1 << " and " << result2;
    }
    else if (discriminant == 0) {
        result3 = (-b)/(2 * a);
        cout << "There is 1 solution." << endl;
        cout << "The solution is: " << result3;
        
    }
    else if (discriminant < 0) {
        cout << "There is no solution.";
    } }

int main() {
    
    double userInput1;
    double userInput2;
    double userInput3;
    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);
    
    return 0; }
#包括
#包括
使用名称空间std;
双计算描述(双a、双b、双c){
双重鉴别;
判别式=pow(b,2)-(4*a*c);
返回判别式;
}
无效二次公式(双判别式、双a、双b、双c){
双重结果1;
双重结果2;
双重结果3;
double discriminant=calculatedDescriminant(double a,double b,double c);//我觉得我的问题就在这里
如果(判别式>0){
结果1=(-b+sqrt(判别式))/(2*a);
结果2=(-b-sqrt(判别式))/(2*a);

cout您将声明函数的语法与调用函数的语法混为一谈。但是,这些是完全不同的事情,试试这个

double discriminant = calculateDiscriminant(a, b, c);
这样考虑一下,当你是一个函数时,你必须告诉编译器所有的类型,所以

double calculateDiscriminant(double a, double b, double c) {
告诉编译器,
calculateDescription
是一个带有
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);
void quadraticFormula(double a, double b, double c) {
您在
求积公式
函数中计算判别式,因此也不需要将其作为参数传递

你应该从逻辑上考虑函数参数。一个计算二次公式的函数需要三个参数,即二次方程中三项的系数。如果你发现自己写了一个包含四个参数的二次公式函数,你就做错了。这是简单的逻辑,与此无关H+C++,

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);` 
//只需将值传递给函数

if(鉴别器1>0){
结果1=(-var2+sqrt(discriminant1))/(2*var1);
结果2=(-var2-sqrt(discriminant1))/(2*var1);

你知道如何调用函数吗?
discriminant=calculateDescription(userInput1,userInput2,userInput3)
查看你的
main
函数以及函数的调用方式,并将其与你怀疑的行进行比较。你看到函数调用方式的区别了吗?使用这样的全局变量是非常糟糕的做法。请不要这样做!@doomista,你也可以这样做。我编辑了代码请不要发布只有正确的代码。有用的部分是解释什么需要更改以及为什么需要更改,因为这将有助于防止将来出现问题!@JVApen,明白你的意思。我将编辑它@JVApen,完成了
    `double discriminant1=calculateDiscriminant(var1,var2,var3);` 
    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.";
    } }