Untitled

 avatar
unknown
plain_text
3 years ago
2.6 kB
1
Indexable
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{

    cout << "Nhập 4 số thực A, B, C, D" << endl;
    double a, b, c, d;
    double denta, x, x1, x2, x3, k;
    cout << "Nhập A: ";
    cin >> a;
    cout << "\n";
    cout << "Nhập B: ";
    cin >> b;
    cout << "\n";
    cout << "Nhập C: ";
    cin >> c;
    cout << "\n";
    cout << "Nhập D: ";
    cin >> d;
    cout << "\n";
    denta = pow(b, 2) - 3 * a * c;
    if (denta == 0)
    {
        cout << " Phương trình có một nghiệm bội: " << endl;
        cout << fixed << setprecision(5) << "x = " << (-b + pow(pow(b, 3) - 27 * pow(a, 2) * d, 1.0 / 3)) / (3 * a);
    }
    k = (9 * a * b * c - 2 * pow(b, 3) - 27 * pow(a, 2) * d) / (2 * sqrt(pow(abs(denta), 3)));
    cout << k << endl;
    if (denta > 0)
    {
        if (abs(k) > 1)
        {
            cout << "Phương trình có nghiệm duy nhất :" << endl;
            cout << fixed << setprecision(5) << "x = " << (sqrt((denta)*abs(k)) / (3 * a * k)) * (pow(abs(k) + sqrt(pow(k, 2) - 1), 1.0 / 3) + pow(abs(k) - sqrt(pow(k, 2) - 1), 1.0 / 3)) - (b / (3 * a));
        }
        if (abs(k) <= 1)
        {
            cout << "Phương trình có 3 nghiệm phân biệt :" << endl;
            cout << fixed << setprecision(5) << "x1 = " << (2 * sqrt(denta) * cos((acos(k) / 3) - (2 * M_PI) / 3) - b) / (3 * a) << endl;
            cout << fixed << setprecision(5) << "x2 = " << (2 * sqrt(denta) * cos(acos(k) / 3) - b) / (3 * a) << endl;
            cout << fixed << setprecision(5) << "x3 = " << (2 * sqrt(denta) * cos((acos(k) / 3) + (2 * M_PI) / 3) - b) / (3 * a) << endl;
        }
    }

    if (denta < 0)
    {
        cout << "Phương trình có nghiệm duy nhất :" << endl;
        if (k > 0)
        {
            if (k > sqrt(pow(k, 2) + 1))
            {
                cout << fixed << setprecision(5) << "x duong= " << (sqrt(abs(denta)) / (3 * a)) * (pow(k + sqrt(pow(k, 2) + 1), 1.0 / 3) + pow(k - sqrt(pow(k, 2) + 1), 1.0 / 3)) - b / (3 * a);
            }
            else
            {
                cout << fixed << setprecision(5) << "x duong= " << (sqrt(abs(denta)) / (3 * a)) * (pow(k + sqrt(pow(k, 2) + 1), 1.0 / 3) - pow(abs(k - sqrt(pow(k, 2) + 1)), 1.0 / 3)) - b / (3 * a);
            }
        }
        else
        {
            cout << fixed << setprecision(5) << "x = " << (sqrt(abs(denta)) / (3 * a)) * (pow(k + sqrt(pow(k, 2) + 1), 1.0 / 3) - pow(abs(k - sqrt(pow(k, 2) + 1)), 1.0 / 3)) - b / (3 * a);
        }
    }
}
Editor is loading...