用C++实现复数的四则运算

前言

第一次写C++,用户界面感觉还行,内部实现不太高级,搞得能看。。。
想发出来留作纪念

功能介绍

这个代码包括一个复数类和四个运算函数,一个用户界面函数和一个功能函数
细节:当复数不足两个时无法进行运算,等等…忘了

结果展示

使用页面
在这里插入图片描述
建立复数
在这里插入图片描述
复数相加
在这里插入图片描述
其他功能诸如此类,不作展示

代码区

由于个人看着头疼所以将其拆开,在此声明这个代码无阉割
复数类

#include<iostream>
#include<stdlib.h>
using namespace std;

class Plural {
public:
	Plural(int r, int i);
	void Display();
	int Real;	//实部
	int Imag;	//虚部
};

Plural::Plural(int r, int i) {
	Real = r;
	Imag = i;
}
void Plural::Display() {
	cout << "z = " << Real << "+ " << Imag << "i" << endl;
}

全局变量
这就是我说的不高级的地方,我知道可以弄static呀什么的,我就是不会

//全局变量 
int n = 1;		//在后面用于辅助p指针
Plural* p[100];	//在后面用于指向复数对象

四则运算
别看我这写的花里胡哨,主要还是为了用户界面好看

//复数相加
void sum(const Plural& z1, const Plural& z2) {
	cout << "+---------------------------------------+" << endl; 
	cout << "  z1 + z2 = (" << z1.Real << "+ " << z1.Imag << "i) + ("
		<< z2.Real << "+ " << z2.Imag << "i) = " << z1.Real + z2.Real
		<< " + " << z1.Imag + z2.Imag << "i" << endl;
		cout << "+---------------------------------------+" << endl; 
}
//复数相减
void sub(const Plural& z1, const Plural& z2) {
	cout << "+---------------------------------------+" << endl; 
	cout << "  z1 - z2 = (" << z1.Real << "+ " << z1.Imag << "i) - ("
		<< z2.Real << "+ " << z2.Imag << "i) = " << z1.Real - z2.Real
		<< " + " << z1.Imag - z2.Imag << "i" << endl;
		cout << "+---------------------------------------+" << endl; 
}
//复数相乘
void mul(const Plural& z1, const Plural& z2) {
	cout << "+---------------------------------------+" << endl; 
	cout << "  z1 * z2 = (" << z1.Real << "+ " << z1.Imag << "i) * ("
		<< z2.Real << "+ " << z2.Imag << "i) = " << z1.Real * z2.Real - z1.Imag * z2.Imag
		<< " + " << z2.Real * z1.Imag + z1.Real * z2.Imag << "i" << endl;
		cout << "+---------------------------------------+" << endl; 
}
//复数相除
void div(const Plural& z1, const Plural& z2) {
	int rTop = z1.Real * z2.Real + z1.Imag * z2.Imag;
	int iTop = z2.Real * z1.Imag - z1.Real * z2.Imag;
	int Down = z2.Real * z2.Real + z2.Imag * z2.Imag;
	cout << "+----------------------------------------------------+" << endl; 
	cout << "  z1 / z2 = (" << z1.Real << "+ " << z1.Imag << "i) / ("
		<< z2.Real << "+ " << z2.Imag << "i) = (" << rTop << "/" << Down
		<< ") + (" << iTop << "/" << Down << ")i " << endl;
	cout << "+----------------------------------------------------+" << endl; 
}

打印菜单

//打印菜单
void makeMenu() {
	cout << "+---【欢迎使用复变四则运算系统】---+" << endl;
	cout << "+-----------------+----------------+" << endl;
	cout << "|   0.退出系统    |   1.输入复数   |" << endl;
	cout << "+-----------------+----------------+" << endl;
	cout << "|   2.复数相加    |   3.复数相减   |" << endl;
	cout << "+-----------------+----------------+" << endl;
	cout << "|   4.复数相乘    |   5.复数相除   |" << endl;
	cout << "+-----------------+----------------+" << endl;
	cout << "请输入指令:";
}

按键交互
与菜单结合食用更香哦

//按键交互
void keyDown() {
	int key = 0;
	cin >> key;
	switch (key) {
	case 0:
		cout << "退出成功!" << endl;
		exit(0);
		break;
	case 1:
		int m_real, m_imag;
//		Plural* p[100];
		cout << "请依次输入复数的实部和虚部:";
		cin >> m_real >> m_imag;
		p[n] = new Plural(m_real, m_imag);//用指针实现复数的调用
		n++;
		break;
	case 2:
		if (n >= 3) {
			int n1, n2;
			cout << "请选择要相加的复数(如:1 2):";
			cin >> n1 >> n2;
			sum(*p[n1], *p[n2]);
		} else cout << "您没有大于两个的复数!" << endl;
		break;
	case 3:
		if (n >= 3) {
			int n1, n2;
			cout << "请选择要相减的复数(如:1 2):";
			cin >> n1 >> n2;
			sub(*p[n1], *p[n2]);
		} else cout << "您没有大于两个的复数!" << endl;
		break;
	case 4:
		if (n >= 3) {
			int n1, n2;
			cout << "请选择要相乘的复数(如:1 2):";
			cin >> n1 >> n2;
			mul(*p[n1], *p[n2]);
		} else cout << "您没有大于两个的复数!" << endl;
		break;
	case 5:
		if (n >= 3) {
			int n1, n2;
			cout << "请选择要相除的复数(如:1 2):";
			cin >> n1 >> n2;
			div(*p[n1], *p[n2]);
		} else cout << "您没有大于两个的复数!" << endl;
		break;
	default:
		cout << "请输入正确指令!" << endl;
		break;
	}
}

主函数

int main() {
	while (1) {
		makeMenu();
		keyDown();
		system("pause");
		system("cls");
	}

	return 0;
}

没啥好讲的,只是为了留作纪念
今天的分享到此结束!

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1ta-chi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值