- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用文档
实用文档
文案大全
文案大全
一、 实验设计方案
1、实验内容与目的(简单介绍实验内容,说明实验目的)
实验目的:设计一个分数计算器:1)实现输入,输出,+,-,*,/运算符的重载;2)实现分子分母的约分与规格化。
实验内容:你的具体选择(要详细)
实现分数计算器的屏幕输入和输出:1)输入采用文件(input.txt)输入,可以有任意个二元分数表达式,表达式之间的分隔符自定义;2)输出到文件(output.txt)
——————————————————————————————————————
输入第一个分数输入运算符若为“;”输入第二个分数
输入第一个分数
输入运算符
若为“;”
输入第二个分数
输入判断符号
计算结果
若为“=”
保 存 结 果 到
output.txt 中
结束本次计算
在实验中还需要面对六个运算符重载,通过运算符重载,我们可以简单的使用分数 计算,而不需要关心它的结构,运算符重载,我们根据基本的数学定理,将加减乘除包 装,并重载了输入输出运算符,这样,在输入输出时便可直接输出用户方便接收的格式。
——————————————————————————————————————
二、实验步骤、测试与结果分析
1、源程序的设计(在此附上源程序(cpp 文件)清单)
#includeiostream #includefstream #includecmath using namespace std;
//-------------------------------创建分数类------------------------------------
class Fraction
{
private:
int nume; //分子
int deno; //分母
int Gcf(int m,int n); //辅助函数,返回 m
和 n 最大公因数
public:
Fraction(int n=1,int d=1); virtual~Fraction(){}
void Reduction(); //约分
int GetNume() const{return nume;} //返回分子int GetDeno() const{return deno;} //返回分母void SetNume(int n); //设置分子
void SetDeno(int d); //设置分母
Fraction operator+(const Fraction a) const; //重载加法符+ Fraction operator-(const Fraction a) const; //重载加法符- Fraction operator*(const Fraction a) const; //重载加法符* Fraction operator/(const Fraction a) const; //重载加法符/
};
ostream operator (ostream out,const Fraction a); //重载输出运算符
istream operator (istream in,Fraction a); //重载输入运算
符
//---------------------------------最大公因数函数------------------------------
int Fraction::Gcf(int m,int n)
{
if(n==0) return m; //如果 n=0,m
为最大公因数
else return Gcf(n,m%n); //否者辗转相除
}
//------------------------------------约分函数---------------------------------
void Fraction::Reduction()
{
if(deno0) //若分母小于 0,将
符号提前
{
nume=-nume; deno=-deno;
}
int f=Gcf(abs(nume),deno);
nume=nume/f; //实现约数
deno=deno/f;
}
//----------------------------------构造函数-----------------------------------
Fraction::Fraction(int n,int d):nume(n),deno(d)
{
if(deno==0) cout分母为 0endl; //查出异常Reduction(); //约分
}
//----------------------------------设置分母函数--------------------------
文档评论(0)