我想知道是否有人可以帮助我解决这个(初学者)问题。
我正在创建一个非常基本的二次方程计算器。我在下面列出了我的代码以及注释(代码片段顶部的注释说明了我必须做的事情)。我在网上查看了多种解决方案并尝试了自己,但是似乎我一直在获取错误的x1和x2值。如果有人可以指导我,我会很高兴。干杯。

/*
create program to calculate x for quadratic equation. (a, b and c)
1) create function which prints out roots of quad equation.
2) throw exception if b2 - 4ac is less than 0.
3) call the function from main.
*/

#include <iostream>
#include <cmath>
#include <string>

using namespace std;

double roots() { //return type, function name, parameters and body of function.
    double a = 0, b = 0, c = 0, x1, x2;
    double discriminant = (b * b) - 4 * a * c;
    cout << "Enter roots of quad equation (in order: a, b, c) " << endl;
    cin >> a >> b >> c;

        if (discriminant >= 0) {

            cout << "Your quadratic equation is: " << a << "x squared + " << b << "x + " << c << " = 0 " << endl;
            x1 = -b + sqrt(discriminant) / (2 * a);
            x2 = -b - sqrt(discriminant) / (2 * a);
            cout << "x1 = " << x1 << endl;
            cout << "x2 = " << x2 << endl;
        }
        else {
            cout << "Negative value returned from (b2 - 4ac), please try again! " << endl;
            exit(1);
        }
}

int main() {

    cout << "Quadratic Equation Calculator " << endl;
    roots();




    return 0;
}

最佳答案

这是一个简单的错误。您只是以错误的顺序放置了代码行。这应该解决它:

/*
create program to calculate x for quadratic equation. (a, b and c)
1) create function which prints out roots of quad equation.
2) throw exception if b2 - 4ac is less than 0.
3) call the function from main.
*/

#include <iostream>
#include <cmath>
#include <string>

using namespace std;

double roots() { //return type, function name, parameters and body of function.
    double a = 0, b = 0, c = 0, x1, x2;
    cout << "Enter roots of quad equation (in order: a, b, c) " << endl;
    cin >> a >> b >> c;
    double discriminant = (b * b) - 4 * a * c; // restructed this line

        if (discriminant >= 0) {

            cout << "Your quadratic equation is: " << a << "x squared + " << b << "x + " << c << " = 0 " << endl;
            x1 = -b + sqrt(discriminant) / (2 * a);
            x2 = -b - sqrt(discriminant) / (2 * a);
            cout << "x1 = " << x1 << endl;
            cout << "x2 = " << x2 << endl;
        }
        else {
            cout << "Negative value returned from (b2 - 4ac), please try again! " << endl;
            exit(1);
        }
}

int main() {

    cout << "Quadratic Equation Calculator " << endl;
    roots();




    return 0;
}

10-06 01:50