Информатика, вопрос задал OderaaOrwa , 2 года назад

На языке С++!

Составить программу для решения уравнений трёх видов:


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;

}

Ответы на вопрос

Ответил jhonfedotov
1

Вы уточняйте какая ошибка пожалуйста

А вообще, если у вас а = 0, то вы немного наглеете на 0 делить :)


OderaaOrwa: jhonfedotov, препод, вставляя 0 1 0 вместо a, b, c, ломает мой код. ответ получается x1 = -nan(ind), x2 = -inf. нужно что то придумать на этот счет.)
jhonfedotov: За это я вам и говорю. Придумайте, что делать если "вредный" пользователь вводит а = 0
OderaaOrwa: jhonfedotov, "вредный". хорошее определение, мне нравится.
что если после кейсов использовать if а=0, то корней нет? думаю это правильно.
Новые вопросы