C++课程设计分数计算器.doc
《C++课程设计分数计算器.doc》由会员分享,可在线阅读,更多相关《C++课程设计分数计算器.doc(18页珍藏版)》请在三一办公上搜索。
1、C+课程设计报告题目:分数计算器 学号: 姓名: 班级:指导教师: 提交日期:2011-9-15 一、 程序功能简介分数计算及测试程序,具有对输入的运算进行“+-*/”的功能。二、 课程设计要求1、 将主程序设计成一个分数计算器。2、 可完成“+-*/等基本运算。3、 可将分数化为十进制小数和带分数。4、 可执行“+-*/”(含括号)四则运算。三、 设计思路利用程序进行加法 减法 乘法 除法四种基本运算,并约分。主要用到的算法:最小公倍数,最大公约数,交换。加法的原理:结果的分子 是两个数的分子分母交换相乘相加的和,结果的分母是 两分母的最小公倍数。减法的原理与加法类似。乘法的原理:分母相乘,
2、分子相乘。除法的原理:第二个分数上下交换后,使用乘法原理。约分的原理:分子分母分别除以分子分母的最大公约数得到的数组合成新的分子分母。四、 关键源代码注解 /*#ifndef _TGR_FRACTIONS_H#define _TGR_FRACTIONS_H*/#include #include #include #include /#include #include class fraction /分数类定义public: fraction();/constructorsfraction(int initn, int initd);/accessorsint numerator() const
3、; /取分子,const成员函数,不能修改数据成员int denominator() const; /取分母double decimal() const; /将分数转换为对应的小数fraction absval() const; /分数的绝对值/modifiersvoid setnum(int newnum); /设置分子void setden(int newden); /设置分母void simplify(); /约分void recip(); /分子分母转置const fraction & operator+= (int rhs);private:int n;int d;/free (no
4、nmember) functions/miscellanyvoid simple(); /简单计算函数void turn(); /转换函数void test(); /测试函数void complex(); /混合运算函数void exam(); /随机测试题函数int GCF(int x, int y); /求x,y的最大公因子/addition operatorsfraction operator+ (const fraction &lhs, const fraction &rhs);fraction operator+ (const fraction &lhs, int rhs);/sub
5、traction operatorsfraction operator- (const fraction &lhs, const fraction &rhs);fraction operator- (const fraction &lhs, int rhs);/multiplication operatorsfraction operator* (const fraction &lhs, const fraction &rhs);fraction operator* (const fraction &lhs, int rhs);/division operatorsfraction opera
6、tor/ (const fraction &lhs, const fraction &rhs);fraction operator/ (const fraction &lhs, int rhs);/power operatorfraction operator (const fraction &base, int exp); /(幂)运算符重载/comparison operatorsbool operator= (const fraction &lhs, const fraction &rhs);bool operator!= (const fraction &lhs, const frac
7、tion &rhs);bool operator= (const fraction &lhs, const fraction &rhs);bool operator (const fraction &lhs, const fraction &rhs);bool operator= (const fraction &lhs, int rhs);bool operator (const fraction &lhs, int rhs);bool operator (const fraction &lhs, int rhs);/ I/O operators/functionsostream & ope
8、rator (istream &is, fraction &f); / 输入运算符重载void PrintAsMixed(ostream &os, const fraction &f); / 输出带分数/*#endif*/* fraction.cppFractions class - implementation file-分数类执行文件开始*/#include fraction.hfraction:fraction() : n(0), d(1) ; /缺省构造函数(=0/1)fraction:fraction(int initn, int initd) : n(initn), d(initd
9、) ;int fraction:numerator() const /取分子return n;int fraction:denominator() const /取分母return d;double fraction:decimal() const /分数转换小数return double(n) / double(d);fraction fraction:absval() const /取分数绝对值fraction returnValue(abs(n), abs(d); /通过构造函数取分母分子绝对值return returnValue;void fraction:setnum(int new
10、num) /设置分子的值n = newnum;void fraction:setden(int newden) /设置分母的值if(newden != 0) /分母非零时设置d = newden;else /若分母为零,显示错误信息并退出cout 错误:除数为零!n 按任意键终止!; getch(); abort(); /退出void fraction:simplify() /分数约分int r = GCF(n, d);n /= r;d /= r;void fraction:recip() /分子分母交换int temp = n;n = d;d = temp;const fraction &
11、fraction:operator+= (int rhs) /重载+= fraction newrhs(rhs, 1); /将作为参数的整数RHS转换为分数类的对象 return (*this+newrhs); /int GCF(int x, int y) /辗转相除求x,y的最大公约数int r = x%y;if(r=0)return y;elsereturn GCF(y, r);fraction operator+ (const fraction &lhs, const fraction &rhs) /重载+,完成两分数相加情况fraction sum; /定义分数类对象,通过两参数对象对
12、其赋值int newnum = (lhs.numerator() * rhs.denominator()+(rhs.numerator() * lhs.denominator();/得到相加后的分子int newden = (lhs.denominator() * rhs.denominator(); /得到相加后的分母sum.setnum(newnum); /设置分子sum.setden(newden); /设置分母sum.simplify(); /分数约分return sum;fraction operator+ (const fraction &lhs, int rhs) /重载+分数与
13、整数相加 fraction newrhs(rhs, 1); /将RHS转换为分数类对象 return lhs + newrhs;fraction operator- (const fraction &lhs, const fraction &rhs)/重载-完成两分数相减fraction newrhs = rhs;newrhs.setnum(-rhs.numerator(); /设置分母为其相反数return lhs + newrhs; /利用+的重载fraction operator- (const fraction &lhs, int rhs) /重载-完成分数与整数的相减 fractio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 分数 计算器
链接地址:https://www.31ppt.com/p-2384473.html