C++课程设计复数计算器Word格式文档下载.doc
《C++课程设计复数计算器Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《C++课程设计复数计算器Word格式文档下载.doc(20页珍藏版)》请在冰豆网上搜索。
开始
输出菜单及提示信息
输入选择
是否做加法
N
是否做减法
N
Y
是否进行测试
N
加法子程序Add()
Y
......……
减法子程序
Y
测试子程序
是否退出
N
Y
结束
2.程序设计思想
1)类的封装
程序中将复数形式的数据定义成一个复数类CComplex,重载了加法及减法等运算符,使函数的加减等运算像一般数据一样方便.每个运算符重载都用一个函数去实现。
参考类的定义如下:
classCComplex{
private:
doubleReal,Image;
public:
CComplex(doublereal=0,doubleimage=0)//构造函数
{Real=real;
Image=image;
}
friendistream&
operator>
>
(istream&
is,CComplex&
com);
//重载输入
friendostream&
operator<
<
(ostream&
os,CComplex&
//重载输出
CComplexoperator+(CComplex&
CComplexoperator-(CComplex&
//减法重载
CComplexoperator*(CComplex&
//乘法重载
CComplexoperator/(CComplex&
//除法重载
intoperator==(CComplex&
intoperator!
=(CComplex&
intoperator>
(CComplex&
intoperator<
floatModule(void);
//复数求模
};
(2)设计的任务要求1
在实际应用中,输入复数可能为a+bi,a,bi,-a,-bi,+i.–i.I等形式。
重载输入运算符应该能识别这样形式多样的复数。
所以在重载输入函数时要综合考虑上述各种输入形式。
可行的处理方式是:
在重载输入函数中,设计用
(3)设计的任务要求2
在程序中设计一个复数运算的测试函数Test(),其功能是让计算机随机出10道运算题,用户给出答案,同时计算机实时判断对错并可以打分。
这个函数的关键是让计算机随机产生复数对象和运算符,计算机内部有一个随机数发生器,可以产生一个固定顺序的整型随机数序列,调用语句为“inta=rand();
”这时,a就是该随机数发生器产生的随机数。
由于产生的随机书数在整数范围内,为测试方便,按程序设计要求,产生的随机复数对象实部和虚部在100以内,运算符只有加减两种。
因此,需要对产生的随机数进行进一步的处理,用随机数模除以除以100,产生出100以内的随机整数;
同样,用随机数模除以3,可以产生出0、1、3三个随机数据,定义0为加法,1为减法,2为乘法,这样就可以产生出随机的复数对象的加减乘运算了。
可以参见图2测试子程序Test()结构框图。
设置循环次数为10
用两个随机数
初始复数对象3
产生8个100以内的随机数
随机数
最后两个随机数
初始复数对象4
前两个随机数
初始复数对象1
用户输入结果
两对象相乘
后两个随机数
初始复数对象2
结果是否正确
产生2以内的随机数op
N
总分加10
Op为0
两对象相减
两对象相加
NN
输出出错信息
YY
输出总分
(4)设计的任务要求3
在程序中重载了>
运算符,其功能是让用户能够直接输入a+bi,a+b*i两种形式的复数,其结构框图如图3所示。
以字符串的形式接受复数对象
求字符串长度
初试化当前数值n=0,字符变量sign=1
字符串是否存在非法字符
Y
输出错误信息,函数返回
是否判别完字符串中所有字符
N
Y
最后一个字符不是‘i’且n!
=0
当前字符为+、-号,同时n!
N
复数对象只有实部,前面取出的数值赋给实部
N
前面取出的数值赋给实部,n=0
N
当前字符是否是‘+’
Sign=1,k++
当前字符是否是‘-’
N
Sign=-1,k++
当前字符是否是为‘i’
‘i’是否是最后一个字符
N
YY
N
输出错误信息,函数返回
当前字符是否是数字字符
将字符转变为数值
Y
3.程序界面
开始界面
运行结果界面
4.程序源代码及详细注解:
#include<
iostream.h>
math.h>
stdlib.h>
string.h>
#defineZ1e-6
into