-nan -inf При входных 0,4,10.Квадратное уравнение
Программа для решения квадратного уравнения. Когда ввожу 0,4,10 получаю в консоли -nan -inf(понял, что это проблема возникает при делении на 0).Если ввожу другие, то получаю нормальный ответ.Как это исправить? Вот, что я делаю:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int a, b, c;
double d, x1, x2, x;
cin >> a >> b >> c;
d = pow(b, 2) - 4 * (a * c);
if (d > 0) {
x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
cout << x1 << " " << x2;
} else {
if (d == 0) {
x = (-b - sqrt(d)) / (2 * a);
cout << x;
}else {
cout << " ";
}
}
return 0;
}
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
Нашел у себя решение уравнения на питоне, которое учитывает все варианты
Ведь у квадратного уравнения в действительных числах есть 0 решений, 1 решения, 2 решения, бесконечное кол-во решений и все надо учесть
print(0) и print(3) - это когда решений нет или решений бесконечно много
a = float(input())
b = float(input())
c = float(input())
if a == 0:
if b == 0 and c == 0:
print(3)
elif b == 0 and c != 0:
print(0)
else:
x = -c / b
print(1, x)
else:
d = b * b - 4 * a * c
if d == 0:
x = -b / (2 * a)
print(1, x)
elif d > 0:
x1 = (-b - d ** 0.5) / (2 * a)
x2 = (-b + d ** 0.5) / (2 * a)
if x1 > x2:
(x1, x2) = (x2, x1)
print(2, x1, x2)
else:
print(0)