упростить сложные корни - PullRequest
2 голосов
/ 09 июля 2010

Я создал программу для вычисления корней вычисления, но она не упрощает корни. Кто-нибудь может мне помочь упростить их

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(void)
{
    int a,b,c;
    float d,d2;
    printf(" Enter a,b and c:");
    scanf("%d %d %d",&a,&b,&c);
    d=b*b-4*a*c;

    if(d<0)
    {
        printf("(%d+i%d)/%d\n",-b,sqrt(-d),2*a) ;
        printf("(%d-i%d)/%d\n",-b,sqrt(-d),2*a);
    }
    else
    {
        printf("(%d+%d)/%d\n",-b,sqrt(d),2*a);
        printf("(%d-%d)/%d\n",-b,sqrt(d),2*a);
    }

getch();
}

Ответы [ 2 ]

4 голосов
/ 09 июля 2010

Вы не можете вычислить квадратный корень из отрицательного числа.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 возвращаетдвойной.

1 голос
/ 09 июля 2010

Если вы хотите вычислить квадратные корни из отрицательных чисел, найдите компилятор C99 (в основном все, что не подойдет MSVC), включите заголовок <complex.h>, используйте complex тип данных и csqrt функцию.

http://en.wikipedia.org/wiki/Complex.h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...