/项目3

编程入门 行业动态 更新时间:2024-10-27 01:33:19

/<a href=https://www.elefans.com/category/jswz/34/1771421.html style=项目3"/>

/项目3

/* 
* Copyright (c) 2011, 烟台大学计算机学院
* All rights reserved.
* 作    者:王静
* 完成日期:2013  年 4  月 24 日
* 版 本 号:v1.0
* 输入描述:
* 问题描述:实现分数类中的运算符重载,
在分数类中可以完成分数的加减乘除(运算后再化简)、求反、
比较(6种关系)的运算。可以从第5周项目2的代码开始工作。
* 程序输出:
* 问题分析:
* 算法设计:略
*/
#include<iostream>
#include<cmath>
using namespace std;
class CFraction
{private:
int nume;  // 分子
int deno;  // 分母
public:CFraction(int nu=0,int de=1);    //置值,改变值时用CFraction simplify();        //化简(使分子分母没有公因子)//比较运算符(二目)的重载bool operator > (CFraction &t);bool operator < (CFraction &t);bool operator == (CFraction &t);//二目运算符的重载CFraction operator+(CFraction &n);CFraction operator-(CFraction &n);CFraction operator*(CFraction &n);CFraction operator/(CFraction &n);void display();
};CFraction::CFraction(int nu,int de)    //置值
{nume=nu;deno=de;
}
CFraction CFraction::simplify() 
{CFraction n;n.nume=nume;n.deno=deno;int i;if(nume%deno==0){n.deno=1;n.nume=nume/deno;}else{if(nume>deno){for(i=2;i<=n.deno;i++){if(nume%i==0&&deno%i==0){n.nume=n.nume/i;n.deno=n.deno/i;}}}else{for(i=2;i<=n.nume;i++){if(n.nume%i==0&&n.deno%i==0){n.nume=n.nume/i;n.deno=n.deno/i;}}}}return n;
}
bool CFraction::operator > (CFraction &t)
{if(nume>t.nume||(nume==t.nume&&deno>t.deno)){return true;}else{return false;}
}
bool CFraction::operator < (CFraction &t)
{if(nume<t.nume||(nume==t.nume&&deno<t.deno)){return true;}else{return false;}
}
bool CFraction::operator == (CFraction &t)
{if(nume==t.nume&&deno==t.deno){return true;}else{return false;}
}
//二目运算符的重载
CFraction CFraction::operator+(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=(n.nume)*deno+nume*(n.deno);return t.simplify();
}
CFraction CFraction::operator-(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=nume*n.deno-n.nume*deno;return t.simplify();
}
CFraction CFraction::operator*(CFraction &n)
{CFraction t;t.deno=deno*n.deno;t.nume=nume*n.nume;return t.simplify();
}
CFraction CFraction::operator/(CFraction &n)
{CFraction t;t.deno=deno*n.nume;t.nume=nume*n.deno;return t.simplify();
}
void CFraction::display()
{if(deno==1){cout<<nume<<endl;}else{cout<<nume<<"/"<<deno<<endl;}
}
int main()
{CFraction n1(3,2),n2(1,2),n;//构造函数,初始化用cout<<"n1为:";n1.display();cout<<"n2为:";n2.display();cout<<"下面比较两个时间大小:\n";if (n1>n2) cout<<"n1>n2"<<endl;if (n1<n2) cout<<"n1<n2"<<endl;if (n1==n2) cout<<"n1=n2"<<endl;cout<<endl;//下面自行设计对其他运算符的重载的测试n=n1+n2;n.display();n=n1-n2;n.display();n=n1*n2;n.display();n=n1/n2;n.display();return 0;
}


 

运行结果:
(贴图)


心得体会:

更多推荐

/项目3

本文发布于:2023-07-04 10:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1023050.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:项目

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!