抽象数据类型的实现(复数的四则运算)

        简单的说一下,我是在DEV C++上实现的复数四则运算。如果学习过JAVA、C++等面向对象高级程序设计语言,那么对抽象数据类型是非常容易理解的。抽象数据类型就类似于java中的类。

废话不多说了直接上代码。

#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
typedef struct 
{
	float Realpart;//实数集,实部。 
	float Imagepart;//实数集,虚部。 
}Complex;
void Creat(Complex &C, float x, float y) //构造一个复数。 
{
	C.Realpart = x;//复数的实部 
	C.Imagepart = y;//复数的虚部系数 
}
float GetReal(Complex C)//获取实部 
{
	return C.Realpart;
}
float GetImag(Complex C)//获取虚部系数。 
{
	return C.Imagepart;
}
Complex Add(Complex C1, Complex C2)//两个复数相加 
{
	Complex sum;
	sum.Realpart = C1.Realpart + C2.Realpart;
	sum.Imagepart = C1.Imagepart + C2.Imagepart;
	return sum;
}
Complex Sub(Complex C1, Complex C2)//两个复数相减。 
{
	Complex difference;
	difference.Realpart = C1.Realpart - C2.Realpart;
	difference.Imagepart = C1.Imagepart - C2.Imagepart;
	return difference;
 } 
 Complex Mul(Complex C1, Complex C2)//两个复数相乘。 
 {
 	Complex mul;
 	mul.Realpart = C1.Realpart * C2.Realpart - C1.Imagepart * C2.Imagepart;
 	mul.Imagepart = C1.Imagepart * C2.Realpart + C1.Realpart * C2.Imagepart;
 	return mul;
 }
 Complex Div(Complex C1, Complex C2) //两个复数相除。 
 {
 	Complex div ;
 	div.Realpart = (C1.Realpart * C2.Realpart + C1.Imagepart * C2.Imagepart)/(C2.Realpart * C2.Realpart + C2.Imagepart * C2.Imagepart);
 	div.Imagepart = (C1.Imagepart * C2.Realpart - C1.Realpart * C2.Imagepart)/(C2.Realpart * C2.Realpart + C2.Imagepart * C2.Imagepart);
 	return div;
 }
int main()
{
	Complex Com,Com1,Com2,Com3;
	float R,I,R1,I1,R2,I2;
	int choose = -1;
	cout <<"1, 建立\n";
	cout <<"2, 取实部\n";
	cout <<"3, 取虚部\n";
	cout <<"4, 求和\n";
	cout <<"5, 求差\n";
	cout <<"6, 求积\n";
	cout <<"7, 求商\n";
	cout <<"0, 退出\n";
	while(choose != 0)
	{
		cout <<"请选择:";
		cin >>choose;
		switch (choose)
		{
			case 1://建立一个复数。 
				cout << "输入1个复数\n";
				cin >> R >> I;
				Creat(Com,R,I); 
				cout << "复数" <<Com.Realpart<<"+"<<Com.Imagepart<<"i"""<<endl;
				break;
			case 2://取复数实部。 
				cout << "输入1个复数\n";
				cin>>R>>I;
				Creat(Com,R,I);
				cout << "复数实部:"<<GetReal(Com)<<endl;
			    break;
			case 3://取复数虚部。 
				cout<< "输入一个复数\n";
				cin>>R1>>I1;
				Creat(Com,R1,I1);
				cout << "复数虚部:"<<GetImag(Com)<<endl;
				break;
			case 4://复数求和 
				cout << "输入第1个复数\n";
				cin>>R1>>I1;
				Creat(Com1,R1,I1);
				cout << "输入第2个复数\n";
				cin>>R2>>I2;
				Creat(Com2,R2,I2);
				cout << "复数相加:" <<Add(Com1,Com2).Realpart; 
				cout << "+" <<Add(Com1,Com2).Imagepart<<"i"<<endl;
				break; 
			 case 5://复数相减 
				cout << "输入第1个复数\n";
				cin>>R1>>I1;
				Creat(Com1,R1,I1);
				cout << "输入第2个复数\n";
				cin>>R2>>I2;
				Creat(Com2,R2,I2);
				cout << "复数相减:" <<Sub(Com1,Com2).Realpart; 
				cout << "+" <<Sub(Com1,Com2).Imagepart<<"i"<<endl;
				break; 
			case 6://复数相乘。 
				cout << "输入第1个复数\n";
				cin>>R1>>I1;
				Creat(Com1,R1,I1);
				cout << "输入第2个复数\n";
				cin>>R2>>I2;
				Creat(Com2,R2,I2);
				cout << "复数相积:" <<Mul(Com1,Com2).Realpart; 
				cout << "+" <<Mul(Com1,Com2).Imagepart<<"i"<<endl;
				break; 
			case 7://复数相除 
				cout << "输入第1个复数\n";
				cin>>R1>>I1;
				Creat(Com1,R1,I1);
				cout << "输入第2个复数\n";
				cin>>R2>>I2;
				Creat(Com2,R2,I2);
				cout << "复数相除:" <<Div(Com1,Com2).Realpart; 
				cout << "+" <<Div(Com1,Com2).Imagepart<<"i"<<endl;
				break; 
		}
	 } 
	 return 0;
}

复数的四则运算数学表达这里我就不叙述了,如果有不会的小伙伴可以去搜索一下。

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值