C++课程设计复数计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++课程设计实验报告
学号班级
合作者学号班级
任课教师时间
教师指定题目复数计算器评定难易级别 A级实验报告成绩
复数计算器
程序功能设计
1.程序功能的总体结构
复数计算器的程序总体功能可设计成如图1所示,可以看出,复数计算器的各种功能都用菜单选项列出,用户可以根据需要选择相应的菜单项,从而执行不同的子程序以完成相应的功能。
2.课程设计要求
(1)一开始运行程序,要有详细的菜单选项界面,用户不选择退出就可以反复运算。
(2)可以进行多个操作数的复数运算,输入0+0*i时为止。
(3)编写可以对输入的复数求模的成员函数。
(4)编写具有测试功能的函数,即计算机能够自动出题,并要求用户计算,同时计算机判断用户计算的对错并打分,要求十题为一个单元,每题一个运算符,运算符包括+,-,*三种,参与加减运算实部虚部为一位数。
(5)重载输入输出运算符,对复数的输入既可采用实部虚部分开提示输入,也可直接输入诸如a+i*b或a+ib这种形式,对复数的输出要考虑实部虚部的正负号,通过判断给出的输出结果。
2.程序设计思想
1)类的封装
程序中将复数形式的数据定义成一个复数类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&); //重载输入
friend ostream&operator<<(ostream&os,CComplex&); //重载输出CComplex operator+(CComplex&);
CComplex operator-(CComplex&); //减法重载
CComplex operator*(CComplex&); //乘法重载
CComplex operator/(CComplex&); //除法重载
int operator==(CComplex&);
int operator!=(CComplex&);
int operator>(CComplex&);
int operator<(CComplex&);
float Module(void); //复数求模
};
(2)设计的任务要求1
在实际应用中,输入复数可能为a+bi, a, bi, -a, -bi, +i. –i. I等形式。重载输入运算符应该能识别这样形式多样的复数。所以在重载输入函数时要综合
考虑上述各种输入形式。可行的处理方式是:在重载输入函数中,设计用
(3)设计的任务要求2
在程序中设计一个复数运算的测试函数Test(),其功能是让计算机
随机出10道运算题,用户给出答案,同时计算机实时判断对错并可
以打分。这个函数的关键是让计算机随机产生复数对象和运算符,计
算机部有一个随机数发生器,可以产生一个固定顺序的整型随机数序
列,调用语句为“int a = rand();”这时,a就是该随机数发生器产
生的随机数。
由于产生的随机书数在整数围,为测试方便,按程序设计要求,产生的随机复数对象实部和虚部在100以,运算符只有加减两种。因
此,需要对产生的随机数进行进一步的处理,用随机数模除以除以
100,产生出100以的随机整数;同样,用随机数模除以3,可以产
生出0、1、3三个随机数据,定义0为加法,1为减法,2为乘法,这样就可以产生出随机的复数对象的加减乘运算了。可以参见图2
测试子程序Test()结构框图。
在程序中重载了>>运算符,其功能是让用户能够直接输入a+bi,a+b*i两种形式的复数,其结构框图如图3所示。
N YY
N
3. 程序界面
开始界面
将字符转变为数值
N
Y
‘i ’是否是最后一个字符
当前字符是
否是数字
输出错误信
息,函数返回
N
N
运行结果界面
4.程序源代码及详细注解:
# include
# include
# include
# include
#define Z 1e-6
class CComplex{
private:
double Real,Image;
public:
CComplex(double real=0,double image=0) //构造函数
{Real=real;Image=image;}
friend istream&operator>>(istream&is,CComplex&); //重载输入friend ostream&operator<<(ostream&os,CComplex&); //重载输出CComplex operator+(CComplex&);
CComplex operator-(CComplex&); //减法重载
CComplex operator*(CComplex&); //乘法重载