数据结构___实验一 复数的四则运算

实验一  复数的四则运算

//1)由输入的实部和虚部生成一个复数;
//2)两个复数求和;
//3)两个复数求差;
//4)两个复数求积,
//5)从已知复数中分离出实部;
//6)从已知复数中分离出虚部。
#include<iostream>
using namespace std;

typedef struct
{
double real;
double img;
}ComplexNumber;


void CreateComplexNumber(ComplexNumber *c, double a, double b);//构造复数
void AddComplexNumber(ComplexNumber *c, ComplexNumber c1, ComplexNumber c2);//求和
void SubComplexNumber(ComplexNumber *c, ComplexNumber c1, ComplexNumber c2);//求差
void MultiComplexNumber(ComplexNumber *c, ComplexNumber c1, ComplexNumber c2);//相乘
void ConComplexNumber(ComplexNumber *c, ComplexNumber);//求共轭
double GetReal(ComplexNumber *c);
double GetImg(ComplexNumber *c);


ComplexNumber c={0.0,0.0};

int main()
{
ComplexNumber *cp=&c;
ComplexNumber c1,c2;
cout<<"请输入两个复数的实部和虚部:";
cin>>c1.real>>c1.img>>c2.real>>c2.img;
cout<<"输入的两个复数为:";
CreateComplexNumber(cp, c1.real, c1.img);
if(cp->img>0)
  cout<<"c1= "<<cp->real<<" + "<<cp->img<<"i"<<'\t';
else if(cp->img<0)
  cout<<"c1= "<<cp->real<<" - "<<(-1)*cp->img<<"i"<<'\t';
else
  cout<<"c1= "<<cp->real<<'\t';
CreateComplexNumber(cp, c2.real, c2.img);
if(cp->img>0)
  cout<<"c2= "<<cp->real<<" + "<<cp->img<<"i"<<endl;
else if(cp->img<0)
  cout<<"c2= "<<cp->real<<" - "<<(-1)*cp->img<<"i"<<endl;
else
  cout<<"c2= "<<cp->real<<endl;
AddComplexNumber(cp, c1, c2);
if(cp->img>0)
  cout<<"复数相加c1+c2= "<<GetReal(cp)<<" + "<<GetImg(cp)<<"i"<<endl;
else if(cp->img<0)
  cout<<"复数相加c1+c2= "<<GetReal(cp)<<" - "<<(-1)*GetImg(cp)<<"i"<<endl;
else
  cout<<"复数相加c1+c2= "<<GetReal(cp)<<endl;
cout<<endl;
SubComplexNumber(cp, c1,c2);
if(cp->img>0)
  cout<<"复数相减c1-c2= "<<GetReal(cp)<<" + "<<GetImg(cp)<<"i"<<endl;
else if(cp->img<0)
  cout<<"复数相减c1-c2= "<<GetReal(cp)<<" - "<<(-1)*GetImg(cp)<<"i"<<endl;
else
  cout<<"复数相减c1-c2= "<<GetReal(cp)<<endl;
cout<<endl;
MultiComplexNumber(cp, c1, c2);
if(cp->img>0)
  cout<<"复数相乘c1*c2= "<<GetReal(cp)<<" + "<<GetImg(cp)<<"i"<<endl;
else if(cp->img<0)
  cout<<"复数相乘c1*c2= "<<GetReal(cp)<<" - "<<(-1)*GetImg(cp)<<"i"<<endl;
else
  cout<<"复数相乘c1*c2= "<<GetReal(cp)<<endl;
cout<<endl;
ConComplexNumber(cp, c1);
if(cp->img>0)
  cout<<"c1的共轭复数为:"<<GetReal(cp)<<" + "<<GetImg(cp)<<"i"<<endl;
else if(cp->img<0)
  cout<<"c1的共轭复数为:"<<GetReal(cp)<<" - "<<(-1)*GetImg(cp)<<"i"<<endl;
else
  cout<<"c1的共轭复数为:"<<GetReal(cp)<<endl;
cout<<endl;
return 0;
}


void CreateComplexNumber(ComplexNumber *c, double a, double b)
{
//构造复数
c->real=a;
c->img=b;
return ;
}//CreateComplexNumber


void AddComplexNumber(ComplexNumber *c, ComplexNumber c1, ComplexNumber c2)
{
//求和
c->real=c1.real+c2.real;
c->img=c1.img+c2.img;
return ;
}//AddComplexNumber


void SubComplexNumber(ComplexNumber *c, ComplexNumber c1, ComplexNumber c2)
{
//求差
c->real=c1.real-c2.real;
c->img=c1.img-c2.img;
return ;
}//SubComplexNumber


void MultiComplexNumber(ComplexNumber *c, ComplexNumber c1, ComplexNumber c2)
{
//相乘
c->real=c1.real*c2.real-c1.img*c2.img;
c->img=c1.real*c2.img+c1.img*c2.real;
return ;
}//MultiComplexNumber


void ConComplexNumber(ComplexNumber *c, ComplexNumber c1)
{
//求共轭
c->real=c1.real;
c->img=c1.img*(-1);
return ;
}//ConComplexNumber


double GetReal(ComplexNumber *c)
{
//获取实部
return c->real;
}//GetReal


double GetImg(ComplexNumber *c)
{
//获取虚部
return c->img;
}//GetImg

posted @ 2009-02-23 17:56  jackhen->hench  阅读(3211)  评论(0编辑  收藏  举报