OderaaOrwa
wherethefux, меня немного беспокоит, что 1 и 2 кейс идентичны. это вызывает сомнение. а так в коде нет ошибок, спасибо.
OderaaOrwa
wherethefux, если я введу вместо a,b,c 0 1 0, то получаю x1 = -nan(ind), x2 = -inf. что значит не все случаи рассмотрены. что теперь следует сделать?
Answers & Comments
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
double a = NAN;
double b = NAN;
double c = NAN;
double p = NAN;
double q = NAN;
double d;
double x1;
double x2;
int n = 0;
cout << "Введите номер уравнения: ";
cin >> n;
switch (n)
{
case 1:
cout << "Введите a, b, c: ";
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: ";
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: ";
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;
}
это вызывает сомнение. а так в коде нет ошибок, спасибо.