Консультация № 189279
27.04.2016, 18:31
0.00 руб.
28.04.2016, 12:49
0 2 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Код:
int main()
{
setlocale(LC_ALL, "Russian");
int a, b, c; float x1, x2;
cout << "Введите коэффициент a: ";
cin >> a;
cout << "Введите коэффициент b: ";
cin >> b;
cout << "Введите коэффициент c: ";
cin >> c;
if ((a == 0) && (b == 0) && (c == 0)) cout << "Бесконечное мн-во решений" << endl;
else
if ((a == 0) && (b != 0) && (c != 0))
{
x1 = -c / b; cout << "x= " << x1 << endl;
}
else
if ((a == 0) && (b == 0) && (c != 0))
{
ЧТО БУДЕТ ЗДЕСЬ?
}
else
if ((b*b - 4 * a*c) < 0)
{
x1 = (-b + sqrt((b*b - 4 * a*c)*(-1))) / (2 * a);
x2 = (-b - sqrt((b*b - 4 * a*c)*(-1))) / (2 * a);
cout << "x1= " << x1 << " " << "x2= " << x2 << endl;
}
else
if ((b*b - 4 * a*c) == 0)
{
x1 = -b / (2 * a);
cout << setprecision(4) << "1 Корень x= " << x1;
}
else
{
x1 = (-b - sqrt(b*b - 4 * a*c)) / (2 * a);
x2 = (-b + sqrt(b*b - 4 * a*c)) / (2 * a);
cout << setprecision(4) << " x1= " << x1 << endl << " x2= " << x2 << endl;
}
system("pause");
getchar();
return 0;
}

Обсуждение

давно
Посетитель
399158
228
27.04.2016, 18:34
общий
Задание :
Написать программу вычисления корней уравнения а*х*х+Ь*х+с=0. Значение корня
квадратного от х возвращает функция стандартной библиотеки double sqrt(double x) (прототип в
файле math.h).
давно
Старший Модератор
312929
1973
28.04.2016, 07:00
общий
это ответ
Здравствуйте, Посетитель - 399158!

Если a = b = 0 и c [$8800$] 0, то уравнение решения не имеет. Кроме того, при b[sup]2[/sup]-4ac<0 решением будут два комплексно-сопряжённых корня, определяемые по формуле x[sub]1,2[/sub] = -b/2a [$177$] i*[$8730$]4ac-b[sup]2[/sup]. Также можно немного оптимизировать код, заранее вычислив выражение b[sup]2[/sup]-4ac один раз. С учётом этого программа примет следующий вид:
[code lang=js]
#include "math.h"
#include "locale.h"
#include "iostream.h"
#include "iomanip.h"

int main()
{
setlocale(LC_ALL, "Russian");
int a, b, c;
float D, x1, x2, y1, y2;
cout << "Введите коэффициент a: ";
cin >> a;
cout << "Введите коэффициент b: ";
cin >> b;
cout << "Введите коэффициент c: ";
cin >> c;
if (a == 0)
{
if (b == 0)
{
if (c == 0) cout << "Бесконечное множество решений" << endl;
else cout << "Нет решения" << endl;
}
else cout << "Один корень: x = " << -c / b << endl;
}
else
{
D = b * b - 4 * a * c;
if (D < 0)
{
x1 = -b / (2 * a);
x2 = sqrt(-D) / (2 * a);
cout << setprecision(4) << "Два комплексно-сопряжённых корня: x1 = " << x1 << "+i*" << x2 << " " << "x2= " << x1 << "-i*" << x2 << endl;
}
else
if (D == 0)
{
x1 = -b / (2 * a);
cout << setprecision(4) << "Один корень: x= " << x1;
}
else
{
x1 = (-b - sqrt(D)) / (2 * a);
x2 = (-b + sqrt(D)) / (2 * a);
cout << setprecision(4) << "Два вещественных корня: x1= " << x1 << " x2= " << x2 << endl;
}
}
system("pause");
getchar();
return 0;
}[/code]
Форма ответа