指冷玉笙寒 于 2010-02-04 15:26:20发表:
算法是专业基础,和操作系统无关。
scott9 于 2010-02-03 15:07:58发表:
这里不是学算法的吧。
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); }
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); }
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); } }
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); } }
zhangbohtz 于 2010-02-02 17:13:50发表:
我自己找的些资料,献丑了
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); }
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); }
指冷玉笙寒 于 2010-02-04 15:26:20发表:
算法是专业基础,和操作系统无关。
scott9 于 2010-02-03 15:07:58发表:
这里不是学算法的吧。
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);
}
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);
}
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);
}
}
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);
}
}
zhangbohtz 于 2010-02-02 17:13:50发表:
我自己找的些资料,献丑了
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);
}
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);
}