C++实现的复数计算器(完整版源代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/************************************************************************
*《C++程序设计实践指导》
*
* 第2章 2.1 一个复数计算器程序
*
* (c) yrmuhon, 2009 2.9
************************************************************************/
#include
#include
#include
#include
#include
#include
//#define EPS len-5 // 定义精度常数
using namespace std;
namespace NameCComplex // 定义命名空间NameCComplex
{
/*-----------------------------------------------------------------------
|部分A:
| 复数类CComplex 的声明和定义,以及结构体类型用户User 的定义
|
----------------------------------------------------------------------*/
/*---------------------------------
| 复数类CComplex 的声明
--------------------------------*/
class CComplex
{
private:
double Real, Image; // 分别为复数的实部和虚部
public:
CComplex(double real=0, double image=0) // 构造函数
{
Real = real; Image = image;
}
friend istream & operator >> (istream & is, CComplex & com); // 重载输入
friend ostream & operator << (ostream & os, CComplex & com); // 重载输出
CComplex operator + (CComplex & com); // 加法重载
CComplex operator -(CComplex & com); // 减法重载
CComplex operator * (CComplex & com); // 乘法重载
CComplex operator += (CComplex & com); // 加法赋值重载
CComplex operator -= (CComplex & com); // 减法赋值重载
CComplex operator *= (CComplex & com); // 乘法赋值重载
CComplex operator ++ (); // 自加
CComplex operator -- (); // 自减
double mod(void);
int operator > (CComplex & com);
int operator < (CComplex & com);
int operator != (CComplex & com);
int operator == (CComplex & com);
};
/*------------------------------------
| 结构体类型用户User 的定义
-----------------------------------*/
struct User
{
char szName[20]; // 用户名
int nTime; // 使用次数
int nTest; // 测试次数
double dlAve; // 平均成绩
int nAdd; // 加法次数
int nSub; // 减法次数
int nMul; // 乘法次数
double dlScore[3]; // 3次测试得分
} user;
/*---------------------------------------------------------------
| 复数类CComplex 的类外定义部分
---------------------------------------------------------------*/
// 重载运算符“++”,实部与虚部均加1
CComplex CComplex::operator ++ ()
{
Real++;
Image++;
return *this;
}
// 重载运算符“--”,实部与虚部均减1
CComplex CComplex::operator -- ()
{
Real--;
Image--;
return *this;
}
// 求复数的模,返回实部^2 + 虚部^2
double CComplex::mod()
{
return Real * Real + Image * Image;
}
// 重载运算符“>”,比较模的大小
int CComplex::operator > (CComplex & com)
{
if ( mod() > com.mod() )
return 1; // 若大,则返回1 else
return 0;
}
// 重载运算符“<”,比较模的大小
int CComplex::operator < (CComplex & com)
{
if ( mod() < com.mod() )
return 1; // 若小,则返回1 else
return 0;
}
// 重载运算符“!=”,分别判断复数的实部与虚部int CComplex::operator != (CComplex & com)
{
if ( *this==com )
return 0;
else
return 1;
}