-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)
→ Ссылка