На языке С++!
Составить программу для решения уравнений трёх видов:
7.1 ax^4 + bx^2 + c = 0;
7.2 ax^4 + bx^3 + cx^2 + bx + a = 0
7.3 x^3 + px + q = 0
то есть составить общий код для этих трех уравнений.
я написал код, но если ввожу 0 1 0 вместо a, b, c, то получается ошибка, что значит не все случаи рассмотрены, помогите пожалуйста с этим!
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "RU");
double a, b, c, d, p, q, x1, x2;
int n = 0;
cout << "Введите номер уравнения: ";
cin >> n;
switch (n)
{
case 1:
cout << "Введите a, b, c: " << endl;
cin >> a >> b >> c;
d = b * b - 4 * a * c;
if (d > 0)
{
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (d == 0)
{
x1 = -b / (2 * a);
cout << "x1 = x2 = " << x1 << endl;
}
else
{
cout << "Корней нет" << endl;
}
break;
case 2:
cout << "Введите a, b, c: " << endl;
cin >> a >> b >> c;
d = b * b - 4 * a * c;
if (d > 0)
{
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (d == 0)
{
x1 = -b / (2 * a);
cout << "x1 = x2 = " << x1 << endl;
}
else
{
cout << "Корней нет" << endl;
}
break;
case 3:
cout << "Введите p, q: " << endl;
cin >> p >> q;
d = p * p - 4 * q;
if (d > 0)
{
x1 = (-p + sqrt(d)) / 2;
x2 = (-p - sqrt(d)) / 2;
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
}
else if (d == 0)
{
x1 = -p / 2;
cout << "x1 = x2 = " << x1 << endl;
}
else
{
cout << "Корней нет" << endl;
}
break;
default:
cout << "Нет такого уравнения" << endl;
}
return 0;
}
Answers & Comments
Вы уточняйте какая ошибка пожалуйста
А вообще, если у вас а = 0, то вы немного наглеете на 0 делить :)
что если после кейсов использовать if а=0, то корней нет? думаю это правильно.