栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 前言
  • 功能介绍
  • 结果展示
  • 代码区

前言

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

功能介绍

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

结果展示

使用页面

建立复数

复数相加

其他功能诸如此类,不作展示

代码区

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

#include
#include
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;
}

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/430122.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号