C/C++

Задача по языку программированию C++

Написать программу решения уравнения ax^3 + bx = 0 для произвольных a и b .
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
const auto eps = 1e-12;
auto a = real("a: ");
auto b = real("b: ");
if (a < eps && b < eps) puts("Any values...");
else {
puts("x1 = 0");
a = -b / a;
if (a > eps) {
auto x = sqrt(a);
cout << "x2 = " << x << "\nx3 = " << -x << '\n';
}
}
system("pause > nul");
}
Пашка Любенчук
Пашка Любенчук
57 681
Лучший ответ
Уравнение ax³ + bx = 0 решается следующим образом.
1) Случай а=0. Если b=0, то x є (-∞;+∞), иначе х=0.
2) Случай а≠0. Тут один вещественный корень всегда нулевой, а другие можно найти, решив уравнение x²=-b/a. Если знак его правой части отрицательный, тогда решением будет мнимая пара ±i·√(b/a), а если положительный, то вещественная пара ±√(-b/a). Теперь всё это правильное решение записываем in code:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a, b, c;
while (1)
{
cout << "a b » ";
cin >> a >> b;
if (a == 0)
if (b == 0) cout << "x є (-∞; +∞)" << endl;
else cout << "x = 0" << endl;
else
{
cout << "x = 0 и х = ±";
c = - b / a;
if (c > 0) cout << sqrt(c);
else cout << sqrt(-c) << "·i";
cout << endl;
}
}
}