复数简单运算

/********************************************************************
--程序描述:	实现复数的加、减、乘、除法
--修改时间:	从前写的代码不够规范——2009.6.17
--修改人:		吴强
--输入要求:	输入1为加法运算,然后输入两复数;
		输入2为减法运算,然后输入两复数;
		输入3为剩法运算,然后输入两复数;
		输入4为除法运算,然后输入两复数;
		输入5为求实部,然后输入一复数;
		输入6为求虚部,然后输入一复数;
********************************************************************/

#include 
#include 

//复数类
class Plural
{
public:
	float	numA;
	float	numA_i;
	float	numB;
	float	numB_i;
	float	ret;
	float	ret_i;

	Plural()
	{
		numA = numA_i = numB = numB_i = ret = ret_i = 0;	
	};

public:
	void addr();      //俩复数进行加法运算
	void jian();	//俩复数进行减法运算
	void sheng();	//俩复数进行乘法运算
	void chu();	//俩复数进行除法运算

	void virl()	//求实部
	{
		printf("input plural(A,Ai): ");
		scanf("%f,%f",&numA,&numA_i);
		printf("Virtual is : %f/n",numA_i);
	}

	void real()	//求虚部
	{
		printf("input plural(A,Ai): ");
		scanf("%f,%f",&numA,&numA_i);
		printf("Real is : %f/n",numA);
	}

	void OutResult();
};

//实现俩复数加法
void Plural::addr()
{
	printf("input two plural(A,Ai;B,Bi): ");
	scanf("%f,%f;%f,%f", &numA, &numA_i, &numB, &numB_i);

	ret = numA+numB;
	ret_i = numA_i+numB_i;

	OutResult();
}

//实现俩复数减法
void Plural::jian()
{
	printf("input two plural(A,Ai;B,Bi): ");
	scanf("%f,%f;%f,%f", &numA, &numA_i, &numB, &numB_i);

	ret = numA-numB;
	ret_i = numA_i-numB_i;

	OutResult();
}

//实现俩复数乘法
void Plural::sheng()
{
	printf("input two plural(A,Ai;B,Bi): ");
	scanf("%f,%f;%f,%f", &numA, &numA_i, &numB, &numB_i);

	ret = numA*numB-numA_i*numB_i;
	ret_i = numA*numB_i+numA_i*numB;

	OutResult();
}

//实现俩复数除法
void Plural::chu()
{
	//分数表示。分别代表实部分母、分子,虚部分母、分子
	float	real_M;  
	float	real_Z;
	float	vir_M;
	float	vir_Z;

	printf("input two plural(A,Ai;B,Bi): ");
	scanf("%f,%f;%f,%f", &numA, &numA_i, &numB, &numB_i);

	if (0 != numB && 0 != numB_i)
	{
		real_M = numA*numB_i-numA_i*numB;
		real_Z = numB*numB_i;
		vir_M = numA*numB+numA_i*numB_i;
		vir_Z = numB*numB_i;

		printf("result is: %f/%f+(%f/%f)i/n", real_M, real_Z, vir_M, vir_Z);
	}
	else if (0 == numB)
	{
		real_M = -numA_i;
		real_Z = numB_i;
		vir_M = numA;
		vir_Z = numB_i;

		printf("result is: %f/%f+(%f/%f)i/n", real_M, real_Z, vir_M, vir_Z);
	}
	else if (0 == numB_i)
	{
		real_M = numA;
		real_Z = numB;
		vir_M = numA_i;
		vir_Z = numB;

		printf("result is: %f/%f+(%f/%f)i/n", real_M, real_Z, vir_M, vir_Z);
	}
}

//输出结果
void Plural::OutResult()
{
	printf("Result is: ");

	if (0 != ret)
	{
		printf("%f", ret);
	}
	if (0 != ret && ret_i > 0)
	{
		printf("+");
	}
	if (0 != ret_i)
	{
		printf("%fi/n", ret_i);
	}
}

void main()
{
	int	oper;
	Plural	plu;

	printf("*******************/n"
		   "    1.加法/n"
		   "    2.减法/n"
		   "    3.剩法/n"
		   "    4.除法/n"
		   "    5.求实部/n"
		   "    6.求虚部/n"
		   "******************/n");

	printf("input operation(1~6)/n");
	scanf("%d", &oper);   //选择操作

	switch (oper)
	{
	case 1:
		{
			plu.addr();
			break;
		}
	case 2:
		{
			plu.jian();
			break;
		}
	case 3:
		{
			pul.sheng();
			break;
		}
	case 4:
		{
			plu.chu();
			break;
		}
	case 5:
		{
			plu.virl();
			break;
		}
	case 6:
		{
			plu.real();
			break;
		}
	default:
		{
			printf("No operation!/n/n");
		}
	}
}	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值