分数计算器设计.docx

上传人:b****6 文档编号:16065552 上传时间:2023-07-10 格式:DOCX 页数:13 大小:67.17KB
下载 相关 举报
分数计算器设计.docx_第1页
第1页 / 共13页
分数计算器设计.docx_第2页
第2页 / 共13页
分数计算器设计.docx_第3页
第3页 / 共13页
分数计算器设计.docx_第4页
第4页 / 共13页
分数计算器设计.docx_第5页
第5页 / 共13页
分数计算器设计.docx_第6页
第6页 / 共13页
分数计算器设计.docx_第7页
第7页 / 共13页
分数计算器设计.docx_第8页
第8页 / 共13页
分数计算器设计.docx_第9页
第9页 / 共13页
分数计算器设计.docx_第10页
第10页 / 共13页
分数计算器设计.docx_第11页
第11页 / 共13页
分数计算器设计.docx_第12页
第12页 / 共13页
分数计算器设计.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

分数计算器设计.docx

《分数计算器设计.docx》由会员分享,可在线阅读,更多相关《分数计算器设计.docx(13页珍藏版)》请在冰点文库上搜索。

分数计算器设计.docx

分数计算器设计

分数计算器设计

黔南民族师范学院计算机科学系

姓名:

何--

指导老师:

任--

学号:

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<<"运算式规范为:

"<

cout<

}

if(m==2)//整数与分数的运算

{

cout<

cout<

";

cin>>z;

cout<

";

cin>>c;

cout<

";

cin>>b;

if(c=='+')

result=b+z;

if(c=='-')

result=z-b;

if(c=='*')

result=b*z;

if(c=='/')

result=z/b;

real=result.predigest();

cout<<"运算式规范为:

"<

cout<

}

if(m==3)//分数与分数的运算

{

cout<

cout<

";

cin>>a;

cout<

";

cin>>c;

cout<

";

cin>>b;

if(c=='+')

result=a+b;

if(c=='-')

result=a-b;

if(c=='*')

result=a*b;

if(c=='/')

result=a/b;

real=result.predigest();

cout<<"运算式规范为:

"<

cout<

}

}

return0;

}

总结报告:

这是我的第一次课程设计,刚开始拿到手感觉一头雾水,不知道到底是从哪里开头去设计一个课题,虽然提供了解决方案让我可以照着步骤去做,但是没有老师的辅导,下手真不容易。

不过,在理清了程序设计的一条条思路后,画了设计层次图,然后一步一步深入,把程序完成了。

其中也遇到很多麻烦,在网上搜索解决了问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2