红联Linux门户
Linux帮助

算法求助

发布时间:2010-02-02 17:12:33来源:红联作者:zhangbohtz
希望在这里学习先进的算法知识,提高自己,也给论坛增点色彩!
文章评论

共有 9 条评论

  1. 指冷玉笙寒 于 2010-02-04 15:26:20发表:

    算法是专业基础,和操作系统无关。

  2. scott9 于 2010-02-03 15:07:58发表:

    这里不是学算法的吧。

  3. zhangbohtz 于 2010-02-02 17:47:32发表:

    /*==========================================================================
    函数名:c_comp_nthroot.c
    函数功能:求复数的n次方根
    输入参数:
    a(已知复数)
    n(n次方根)
    c(计算结果结构体,是一个数组,共n个)
    返回值: 0(失败)1(成功)
    ===========================================================================*/
    #include
    #include
    #include
    #define PI 3.1415926

    struct c_comp
    {
    double rmz;
    double imz;
    }c_comp;
    int c_comp_nthroot(a,c,n)
    struct c_comp *a,*c;
    int n;
    {
    int i;
    double R,theta;
    if(a==NULL||c==NULL)
    {
    printf("(c_comp_nthroot)The c_comp_nthroot pointer is NULL");
    return (0);
    }
    theta=atan2(a->imz,a->rmz);
    R=sqrt(a->rmz*a->rmz+a->imz*a->imz);
    R=pow(r,1.0/n);
    for(i=0;i {
    c[i].rmz=R*cos((theta+2*i*PI)/n);
    c[i].imz=R*sin((theta+2*i*PI)/n);
    }
    return (1);
    }

  4. zhangbohtz 于 2010-02-02 17:14:55发表:

    /*===========================================================
    函数名:c_comp_log.c
    功能描述:复数求对数
    输入参数:
    a(输入的结构体)
    c(计算结果的结构体)
    返回值:0(失败)1(成功)
    =============================================================*/
    #include
    #include
    #include
    struct c_comp
    {
    double rmz;
    double imz;
    }c_comp;
    int c_comp_log()
    struct c_comp *a,*c;
    {
    if(a==NULL||c==NULL)
    {
    printf("(c_comp_log)The c_comp_log pointer is NULL");
    return(0);
    }
    c->rmz=log(sqrt(a->rmz*a->rmz+a->imz*a->imz));
    c->imz=atan2(a->imz,a->rmz);
    return(1);

    }

  5. zhangbohtz 于 2010-02-02 17:14:33发表:

    void main()
    {
    struct c_comp a,b,c,f,g,h;
    struct c_comp d[5];
    int n=5,i;
    z.rmz=5.5;
    z.imz=3.7;
    if(c_comp_power(&a,&c,n))
    {
    printf("5 次乘幂的结果为:\n");
    printf("%1.5\n+j%1.5f\n",c.rmz,c.imz);
    }
    if(c_comp_nthroot(&a,&d,n))
    {
    printf("5次方根的结果为:\n");
    printf("%1.5f+j%1.5f\n",d[i].rmz,d[i].imz);
    }
    if(c_comp_exp(&a,&b))
    {
    printf("指数的结果为:\n");
    printf("%1.5f+j%1.5f\n",f.rmz,f.imz);
    }
    if(c_comp_log(&a,&f))
    {
    printf("对数的结果为:\n");
    printf("%1.5f+%1.5f\n",f.rmz,f.imz);
    }
    if(c_comp_sin(&a,&g))
    {
    printf("正玄的结果为:\n");
    printf("%1.5f+j%1.5f\n",g.rmz,g.imz);
    }
    if(c_comp_cos(&a,&h))
    {
    printf("余玄的结果为:\n");
    printf("%1.5f+j%1.5f\n",h.rmz,h.imz);
    }
    }

  6. zhangbohtz 于 2010-02-02 17:14:11发表:

    #include
    #include
    #include
    #include"c_comp_product.c"
    #include"c_comp_divide.c"

    void main()
    {
    struct c_comp a,b,c,d;
    a.rmz=7.0;
    a.imz=3.0;
    b.rmz=2.3;
    b.imz=-4.5;


    if(c_comp_product(&a,&b,&c))
    {
    printf("乘法的结果:");
    printf("%1.5f+j%1.5f\n",c.rmz,c.imz);
    }
    if(c_comp_divide(&a,&b,&d))
    {
    printf("除法结果为:",d.rmz,d.imz);
    }

    }

  7. zhangbohtz 于 2010-02-02 17:13:50发表:

    我自己找的些资料,献丑了

  8. zhangbohtz 于 2010-02-02 17:13:34发表:

    /*==============================================
    函数名:c_comp_divde.c
    功能描述:求复数除法
    输入参数:a1(被除数a的结构体)
    a2(除数b的结体)
    c(计算结果的结构体)
    返回值:0(成功),1(失败)
    ===============================================*/

    #include
    #include
    #include
    #include

    struct c_comp

    {
    double rmz;
    double imz;
    }c_comp;

    int comp_divide(a1,a2,c)
    struct c_comp *a1,*a2,*c;
    {
    double R2;
    if(a1==NULL||a2==NULL||c==NULL)
    printf("(c_comp_divide)The c_comp pointer is NULL");
    return (0);
    }
    R2=a2->rmz*a2->rmz+a2->imz*imz;
    c_comp_product(&a1,&a2,&c);
    c->rmz=c->rmz/R2;
    c->rmz=c->imz/R2;
    return(1);
    }

  9. zhangbohtz 于 2010-02-02 17:13:06发表:

    /*==============================================================================
    函数名:c_comp_cos.c
    功能描述:求复数的余玄
    输入参数:a(输入结构体)
    c(计算结果的结构体)
    返回值:0(失败)1(成功)
    ==============================================================================*/
    #include
    #include
    #include
    struct c_comp
    {
    double rmz;
    double imz;
    }c_comp;
    int c_comp_cos(a,c)
    struct c_comp *a,*c;
    double tmp1,tmp2;
    if(a==NULL||c==NULL)
    {
    printf("(c_comp_cos)The c_comp pointer is NULL");
    return(0);
    }
    tmp1=exp(a->imz);
    tmp2=exp(-a->imz);
    c->rmz=cos(a->rmz)*(tmp1+tmp2)/2;
    c->imz=-sin(a->rmz)*(tmp1-tmp2)/2;
    return(1);
    }