简化复杂的根源

时间:2010-07-09 10:17:56

标签: c

我制作了一个程序来计算quauation的根源,但它并没有简化root。任何人都可以帮我简化它们

#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 个答案:

答案 0 :(得分:4)

您无法计算负数的平方根。 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论点附近有了parantheses,我删除了那些。

第二个%d也应该更改为%lf,因为sqrt会返回一个双倍。

答案 1 :(得分:1)

如果你想计算负数的平方根,找一个C99编译器(基本上,MSVC除了之外的任何东西),包括<complex.h>标题,使用complex数据类型和csqrt功能

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