C++课程设计复数计算器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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&); //乘法重载

相关文档
最新文档