分数计算器设计.docx
- 文档编号:5365410
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:13
- 大小:89.84KB
分数计算器设计.docx
《分数计算器设计.docx》由会员分享,可在线阅读,更多相关《分数计算器设计.docx(13页珍藏版)》请在冰豆网上搜索。
分数计算器设计
分数计算器设计
黔南民族师范学院计算机科学系
姓名:
何--
指导老师:
任--
学号:
1208075---
班级:
B12计科班
日期:
2013.12.2
1、问题描述
定义一个整数类。
定义一个分数类,由整数类派生出。
能对分数进行各种计算和输入/输出。
2、功能要求
(1)定义整数类和分数类。
其中,包括构造函数、析构函数、显示函数等。
(2)输入/输出:
对流提取和流插入运算符进行重载。
(3)计算功能:
可进行分数的加、减、乘和除法运算。
(4)化简功能:
将分数化简为最简分数。
(5)异常处理功能:
分数中分母不能为零。
(6)菜单功能:
每种功能的操作都是在菜单中进行相应选择。
3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
Main.obj分数计算器.obj
main.exe
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
源代码:
//分数计算器h.h:
#include
classInteger//整数类
{
protected:
intfz;
intfm;
public:
Integer(inta=0,intb=1):
fz(a),fm(b){}
~Integer(){}
voiddisplay();
};
classFraction:
publicInteger//分数类,进行计算和输入输出
{
public:
Fraction(inta=0,intb=1):
Integer(a,b){}
friendistream&operator>>(istream&,Fraction&);//重载输入流
friendostream&operator<<(ostream&,Fraction&);//重载输出流
Fractionoperator+(Fraction&c);//重载+运算符(分数与分数)
Fractionoperator+(intn);//重载+运算符(整数与分数)
Fractionoperator-(Fraction&c);//重载-运算符(分数与分数)
Fractionoperator-(intn);//重载-运算符(整数与分数)
friendFractionoperator-(intn,Fraction&c);
Fractionoperator*(Fraction&c);//重载*运算符(分数与分数)
Fractionoperator*(intn);//重载*运算符(整数与分数)
Fractionoperator/(Fraction&c);//重载/运算符(分数与分数)
Fractionoperator/(intn);//重载/运算符(整数与分数)
friendFractionoperator/(intn,Fraction&c);
Fractionpredigest();//约分函数
voiddisplay();
};
//实现函数(分数计算器设计)
#include
#include"分数计算器h.h"
voidInteger:
:
display()
{
cout< cout<<"------------------分数计算器-----------------"< cout<<"请选择功能: "< cout<<"1分数与整数的四则运算。 "< cout<<"2整数与分数的四则运算。 "< cout<<"3分数与分数的四则运算。 "< cout<<"0输入0退出。 "< } FractionFraction: : predigest()//定义约分函数 { intn,d,t,sign=1; Fractiontemp; if(fz<0&&fm<0) { fz=-fz; fm=-fm; } if(fz>0&&fm<0) { fm=-fm; sign=-1; } if(fz<0&&fm>0) { fz=-fz; sign=-1; } n=fz; d=fm; intr; if(n {t=n;n=d;d=t;} r=n%d; while(r! =0) { n=d; d=r;//d为最大公约数 r=n%d; } temp.fz=sign*(fz/d); temp.fm=fm/d; returntemp; } FractionFraction: : operator+(Fraction&c)//重载两个分数的加法运算符 { Fractiontemp; temp.fz=fz*c.fm+fm*c.fz; temp.fm=fm*c.fm; returntemp; } FractionFraction: : operator+(intn)//重载分数和整数的加法运算 { Fractiontemp; temp.fz=fm*n+fz; temp.fm=fm; returntemp; } Fractionoperator-(intn,Fraction&c) { Fractiontemp; temp.fz=c.fm*n-c.fz; temp.fm=c.fm; returntemp; } FractionFraction: : operator-(intn)//重载分数减整数的减法运算符 { Fractiontemp; temp.fz=fz-fm*n; temp.fm=fm; returntemp; } FractionFraction: : operator-(Fraction&c)//重载两个分数的减法运算符 { Fractiontemp; temp.fz=fz*c.fm-fm*c.fz; temp.fm=fm*c.fm; returntemp; } FractionFraction: : operator*(Fraction&c)//重载两个分数的乘法运算符 { Fractiontemp; temp.fz=fz*c.fz; temp.fm=fm*c.fm; returntemp; } FractionFraction: : operator*(intn)//重载分数与整数的乘法运算符 { Fractiontemp; temp.fz=fz*n; temp.fm=fm; returntemp; } FractionFraction: : operator/(Fraction&c)//重载两个分数的除法运算符 { Fractiontemp; temp.fz=fz*c.fm; temp.fm=fm*c.fz; returntemp; } FractionFraction: : operator/(intn)//重载分数除以整数的除法运算符 { Fractiontemp; temp.fz=fz; temp.fm=fm*n; returntemp; } Fractionoperator/(intn,Fraction&c) { Fractiontemp; temp.fz=n*c.fm; temp.fm=c.fz; returntemp; } ostream&operator<<(ostream&output,Fraction&t)//重载输出运算符,输出分数 { inta,b,c; a=t.fz; b=t.fm; if(a==0||b==0)//当分子,或者分母为0时,输出0 cout<<"0"; if(b==1)//当分母为1时,输出分子 cout< if(a>b&&b! =1)//判断分数为假分数 { c=a/b; a=a%b; cout< if(a! =0) cout<<"又"< } if(a<0&&-a>b&&b! =1)//当分数为负时,判断为假分数 { c=-a/b; a=-a%b; c=-c; cout<<'='< if(a! =0) cout<<"又"< } if(t.fz>0&&t.fz =0&&t.fm! =1) //判断为真分数 output< if(t.fz<0&&-t.fz =0&&t.fm! =1) //判断为真分数 output<<"("< returnoutput; } istream&operator>>(istream&input,Fraction&t)//重载输入运算符,输入分数 {inta,c; charb; input>>a>>b>>c; if(b=='/'&&c! =0) { t.fz=a; t.fm=c; } else cout<<"错误! ! ! 输入格式错误或分母为0! 请退出重新输入! "< returninput; } //main函数 #include #include"分数计算器h.h" intmain() { Integerdis; Fractiona,b,result,real; intm,z; charc;//数据类型 dis.display(); while(m! =0) { cout<<"请输入: (0-3): "; cin>>m; if(m==1)//分数与整数的运算 { cout< "; cin>>a; cout< "; cin>>c; cout< "; cin>>z; if(c=='+') result=a+z; if(c=='-') result=a-z; if(c=='*') result=a*z; if(c=='/') result=a/z; real=result.predigest(); cout<<"运算式规范为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分数 计算器 设计