Untitled
unknown
plain_text
3 years ago
2.6 kB
4
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...