当前位置:编程学习 > C/C++ >>

实验项目2——复数四则运算

实验内容
[问题描述]
设计实现一个可进行复数运算的演示程序。
[基本要求]
实现下列六种基本运算:
1) 由输入的实部和虚部生成一个复数;
2) 两个复数求和;
3) 两个复数求差;
4) 两个复数求积;
5) 从已知复数中分离出实部;
6) 从已知复数中分离出虚部;
运算结果以相应的复数或实数的表示形式显示。
【代码】
#include<iostream>
using namespace std;
template <class Elem> class Complex
{
private:
Elem reality;
Elem falsehood;
public:
Complex(Elem r,Elem f)
{
reality=r;
falsehood=f;
}

Complex operator + (const Complex& c1)//初始条件:已经存在两个复数;
//操作结果:将两个复数的实部和虚部分别进行向加得到一个新的复数
{
return Complex(reality+c1.reality,falsehood+c1.falsehood);
}

Complex operator - (const Complex& c1)//初始条件:已经存在两个复数;
//操作结果:将两个复数的实部和虚部分别进行向减得到一个新的复数
{
return Complex(reality-c1.reality,falsehood-c1.falsehood);
}

Complex operator * (const Complex& c1)// 初始条件:已经存在两个复数;
//操作结果:按照复数乘法规则将两个复数的实部相乘结果减去两个复数虚部相乘结果为新生成复数的实部;
//将两个复数的虚部和实部交叉相乘再相加的结果作为新生成复数的虚部。
{
return Complex(reality*c1.reality-falsehood*c1.falsehood,reality*c1.falsehood+falsehood*c1.reality);
}

Complex operator/(const Complex& c1)//重载操作符/
{
if(falsehood!=0)
return Complex((reality * c1.reality + falsehood + c1.falsehood)/(c1.reality*c1.reality +                c1.falsehood * c1.falsehood),(falsehood * c1.reality - reality * c1.falsehood) /                        (c1.reality * c1.reality + c1.falsehood * c1.falsehood));
else
cout<<"分母不能为0,请重新输入"<<endl;
}

Elem Reality()//初始条件:复数已经存在;
//操作结果:返回复数的实部;
{
return reality;
}

Elem Falsehood()// 初始条件:复数已经存在;
//操作结果:返回复数的虚部
{
return falsehood;
}

void Conjugate()//求共轭复数
{
falsehood=-falsehood;
}

void Output()//初始条件:复数已经存在,
//操作结果:以复数形式输出复数到屏幕上
{
if(falsehood>0)
{
cout<<"("<<reality<<"+"<<falsehood<<"i"<<")"<<endl;
}
else
cout<<"("<<reality<<falsehood<<"i"<<")"<<endl;
}
};
int main() //测试
{
Complex<float> c1(1,2);
Complex<float> c2(2,3);
cout<<"测试结果:"<<endl;
cout<<"两个复数分别为:(1+2i)和(2+3i)"<<endl;
cout<<"(1+2i)+(2+3i)=";
(c1+c2).Output();
cout<<"\n(1+2i)-(2+3i)=";
(c1-c2).Output();
cout<<"\n(1+2i)*(2+3i)=";
(c1*c2).Output();
cout<<"\n(1+2i)/(2+3i)=";
(c1/c2).Output();
cout<<"\nc1的实部是:"<<c1.Reality()<<endl;
cout<<"\nc1的虚部是:"<<c1.Falsehood()<<endl;
cout<<"\nc2的实部是:"<<c2.Reality()<<endl;
cout<<"\nc2的虚部是:"<<c2.Falsehood()<<endl;
cout<<"\nc1的共轭复数是:";
c1.Conjugate();
c1.Output();
cout<<"\nc2的共轭复数是:";
c2.Conjugate();
c2.Output();
system("pause");
return 0;
}
注:以上内容仅供参考,如有问题请指正。


作者“心海新航”

补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,