Вы не можете вычислить квадратный корень из отрицательного числа.d
отрицательно, и вы пытаетесь найти его квадратный корень.Весь смысл сложных решений и мнимой единицы i
состоит в том, чтобы записать -1
как i^2
, а затем, когда d < 0
, вы получите:
sqrt(d) = sqrt(i^2 * (-d)) = i*sqrt(-d)
Так что измените на это:
if(d<0)
{
printf("(%d+i%lf)/%d",-b,sqrt(-d),2*a);
printf("(%d-i%lf)/%d",-b,sqrt(-d),2*a);
}
Я не знаю, почему у вас были паратезы вокруг ваших printf
аргументов, я удалил их.
Второй %d
также должен быть изменен на %lf
, так как sqrt
возвращаетдвойной.