c++分数计算器含源码Word文档格式.docx

上传人:b****6 文档编号:20516108 上传时间:2023-01-23 格式:DOCX 页数:11 大小:83.56KB
下载 相关 举报
c++分数计算器含源码Word文档格式.docx_第1页
第1页 / 共11页
c++分数计算器含源码Word文档格式.docx_第2页
第2页 / 共11页
c++分数计算器含源码Word文档格式.docx_第3页
第3页 / 共11页
c++分数计算器含源码Word文档格式.docx_第4页
第4页 / 共11页
c++分数计算器含源码Word文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

c++分数计算器含源码Word文档格式.docx

《c++分数计算器含源码Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++分数计算器含源码Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

c++分数计算器含源码Word文档格式.docx

{

private:

intnume;

//分子

intdeno;

//分母

intGcf(intm,intn);

//辅助函数,返回m和n最大公因数

public:

Fraction(intn=1,intd=1);

virtual~Fraction(){}

voidReduction();

//约分

intGetNume()const{returnnume;

}//返回分子

intGetDeno()const{returndeno;

}//返回分母

voidSetNume(intn);

//设置分子

voidSetDeno(intd);

//设置分母

Fractionoperator+(constFraction&

a)const;

//重载加法符+

Fractionoperator-(constFraction&

//重载加法符-

Fractionoperator*(constFraction&

//重载加法符*

Fractionoperator/(constFraction&

//重载加法符/

};

ostream&

operator<

(ostream&

out,constFraction&

a);

//重载输出运算符<

istream&

operator>

(istream&

in,Fraction&

//重载输入运算符>

//---------------------------------最大公因数函数------------------------------

intFraction:

:

Gcf(intm,intn)

if(n==0)returnm;

//如果n=0,m为最大公因数

elsereturnGcf(n,m%n);

//否者辗转相除

}

//------------------------------------约分函数---------------------------------

voidFraction:

Reduction()

if(deno<

0)//若分母小于0,将符号提前

{

nume=-nume;

deno=-deno;

}

intf=Gcf(abs(nume),deno);

nume=nume/f;

//实现约数

deno=deno/f;

//----------------------------------构造函数-----------------------------------

Fraction:

Fraction(intn,intd):

nume(n),deno(d)

if(deno==0)cout<

"

分母为0"

endl;

//查出异常

Reduction();

//约分

//----------------------------------设置分母函数-------------------------------

SetNume(intn)

nume=n;

//----------------------------------设置分子函数-------------------------------

SetDeno(intd)

if(d==0)cout<

//查出异常

deno=d;

//----------------------------------重载运算符+--------------------------------

FractionFraction:

operator+(constFraction&

a)const

Fractionresult;

result.nume=this->

nume*a.deno+this->

deno*a.nume;

//求和的分子

result.deno=this->

deno*a.deno;

//求和的分母

result.Reduction();

//约分

returnresult;

//返回和

//----------------------------------重载运算符---------------------------------

operator-(constFraction&

nume*a.deno-this->

//求差的分子

//求差的分母

//返回差

//----------------------------------重载运算符*--------------------------------

operator*(constFraction&

nume*a.nume;

//求积的分子

//求积的分母

//返回积

//----------------------------------重载运算符/--------------------------------

operator/(constFraction&

if(a.nume==0)cout<

除数为0"

//如果除数为0,输出异常

nume*a.deno;

//求商的分子

//求商的分母

//返回商

//----------------------------------重载运算符<

--------------------------------

a)

out<

a.GetNume()<

/"

a.GetDeno();

//按一定格式输出分数

returnout;

//返回输出流

}

//----------------------------------重载运算符>

charch;

//接收字符

intm,n;

//定义分子和分母

in>

m;

//输入分子

ch;

//输入/

if(ch!

='

/'

)cout<

非法字符"

n;

//输入分母

if(n==0)cout<

//如果分母为0,输出异常

a.SetNume(m);

//设置分子

a.SetDeno(n);

//设置分母

a.Reduction();

returnin;

//返回输入流

intmain(void)

Fractionobj1,obj2,result;

//定义两个分数和结果

charindex,ch;

//定义符号

ifstreaminfile("

input.txt"

ios:

in);

//以输入的方式打开文件

if(!

infile)//若文件打开失败

cout<

打开文件input.txt失败!

exit

(1);

ofstreamoutfile("

output.txt"

app);

//以输出的方式打开文件

outfile)//若文件打开失败

打开文件output.txt失败"

outfile<

---------------------本次计算结果如下--------------------"

for(;

;

)//无限次循环直到求解完成

infile>

obj1;

//输入第一个分数

index;

//输入需要执行的操作符号

obj2;

//输入第二个分数

//选择继续或者计算结果

if(index=='

+'

)result=obj1+obj2;

//加法

elseif(index=='

-'

)result=obj1-obj2;

//减法

*'

)result=obj1*obj2;

//乘法

)result=obj1/obj2;

//除法

else

{

system("

PAUSE"

);

return0;

}

正在计算"

obj1<

"

index<

obj2<

..."

ofstreamoutfile("

if(!

outfile)

cout<

exit

(1);

outfile<

="

result<

//输出结果到output.txt

计算完成,结果保存在output.txt中"

endl<

if(ch=='

'

)continue;

//若遇到"

,继续执行

elseif(ch=='

)//若遇到"

,计算结果

outfile<

-------------------------谢谢使用------------------------"

break;

outfile.close();

//文件输出流关闭

infile.close();

//文件输出流关闭

system("

return0;

2、实验现象及结论(应用文字和程序运行的截图说明程序测试现象,并解释结果)

input.txt输入截图如下:

Jcsy.exe执行截图如下:

output.txt输出截图如下:

jcsy.exe执行截图如下:

Output.txt输出截图如下:

3、实验总结(是否成功解决问题,总结实验中最有价值的内容,程序能够在哪些方面进一步改善,自我评价成败得失)

试验中,我们按照从简单到复杂的方法,一步一个脚印编写代码,使得程序不易发生错误,并且容易更正,编写出来的程序代码简洁明朗,效率较高;

通过对例题的学习,我们最终将正确的代码编写出,并在不断地修改之下做到方便用户使用的要求;

编码的速度有一个从慢到快的过程,在本次试验中,我们的速度依然比较慢,这看出我们平时编码比较少,缺乏熟练度,并对算法了解不深入;

但是我们的代码看起来仍然有些凌乱,效率还没有带到真正的高效,每次运行都需要等待几秒钟。

再以后我们将通过练习基础功,简化程序代码,实现简单代码完善功能的理想。

1.编码要尽量使程序简单,采用最切实可靠的算法,实现封装,不同部分的代码应分工明确,最后由主函数统一调用;

2.编写完成后先自己检查一遍代码,然后由机器检测,找出错误的根源,从不同角度思考如何解决问题;

3.测试时应尽可能输入各种可能情况的数据以确保程序准确无误。

4.应避免任何可能的漏洞,使代码的可用性和可靠性增强。

5.试验中,我按照从简单到复杂的方法,一步一个脚印编写代码,使得程序不易发生错误,并且容易更正,编写出来的程序代码简洁明朗,效率较高;

6.通过对例题的学习,我最终将正确的代码编写出,并在不断地修改之下做到方便用户使用的要求;

7.编码的速度有一个从慢到快的过程,在本次试验中,我的速度依然比较慢,这看出我平时编码比较少,缺乏熟练度,并对算法了解不深入;

8.但是我的代码看起来仍然有些凌乱,效率还没有带到真正的高效,每次运行都需要等待几秒钟。

再以后我将通过练习基础功,简化程序代码,实现简单代码完善功能的理想。

本次试验中,我们先将书上的代码编译通过,通过讨论,认为书上检查异常的方式不便于理解,于是直接采用输出到dos窗口的方式,所以没有使用到utility.h头文件,同时,由于我们电脑上安装的编译系统不方便对.h文件进行调试修改,所以我们采用的cpp文件,在一个cpp文件中写下所有代码。

对于txt文件输出的格式,我们做的稍微人性化,界面简洁,容易区分

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

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1