第十二周【项目1-实现复数类中的运算符重载】
来源:互联网 发布:高中物理仿真实验软件 编辑:程序博客网 时间:2024/06/05 18:43
/* *Copyright(c) 2016, 烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:张珩瑞 *完成日期:2016年5月26日 *版本号:v1.0 * *问题描述:分数类中的运算符重载 *输入描述:无 *输出描述:无 */#include <iostream>#include <Cstring>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int a=0,int b=1); //构造函数及运算符重载的函数声明 CFraction operator+(const CFraction&p); CFraction operator-(const CFraction&p); CFraction operator*(const CFraction&p); CFraction operator/(const CFraction&p); void simplify(); friend ostream & operator<<(ostream&output,CFraction&p); friend istream & operator>>(istream&input,CFraction&p); bool operator>(const CFraction &p); bool operator<(const CFraction &p); bool operator==(const CFraction &p); bool operator!=(const CFraction &p); bool operator>=(const CFraction &p); bool operator<=(const CFraction &p); CFraction operator+(); //取正一目运算 CFraction operator-(); //取反一目运算 CFraction operator~(); //取倒数一目运算};ostream & operator<<(ostream &output,CFraction &p){ output<<p.nume<<"/"<<p.deno<<endl; return output;}istream & operator>>(istream &input,CFraction &p){ char c; cout<<"please input(a/b):"<<endl; input>>p.nume>>c>>p.deno; return input;}CFraction::CFraction(int a,int b){ nume=a; deno=b;}CFraction CFraction::operator+(const CFraction&p){ CFraction c; c.nume=nume+p.nume; c.deno=deno+p.deno; c.simplify(); return c;}CFraction CFraction::operator-(const CFraction&p){ CFraction t; t.nume=nume*p.deno-p.nume*deno; t.deno=deno*p.deno; t.simplify(); return t;}CFraction CFraction::operator*(const CFraction&p){ CFraction c; c.nume=nume*p.nume; c.deno=deno*p.deno; c.simplify(); return c;}CFraction CFraction::operator/(const CFraction&p){ CFraction c; if (!p.nume) return *this; c.nume=nume/p.nume; c.deno=deno/p.deno; c.simplify(); return c;}void CFraction::simplify(){ int c,t,fen; fen=deno; if(nume<fen) { t=nume; nume=fen; fen=t; } c=nume%fen;//...... while(c!=0) { nume=fen; fen=c; c=nume%fen; } nume=nume/fen; deno=deno/fen; if (deno<0) // 将分母转化为正数 { deno=-deno; nume=-nume; }}bool CFraction::operator>(const CFraction &p){ //分母不相等先通分 int this_nume,c_nume,common_deno; this_nume=nume*p.deno; // 计算分数通分后的分子,同分母为deno*c.deno c_nume=p.nume*deno; common_deno=deno*p.deno; if ((this_nume-c_nume)*common_deno>0) return true; return false;}bool CFraction::operator<(const CFraction &p){ int this_nume,c_nume,common_deno; this_nume=nume*p.deno; c_nume=p.nume*deno; common_deno=deno*p.deno; if ((this_nume-c_nume)*common_deno<0) return true; return false;} bool CFraction::operator==(const CFraction &p) { if (*this!=p) return false; return true; } bool CFraction::operator!=(const CFraction &p) { if (*this>p|| *this<p) return true; return false; }// 分数比较大小 bool CFraction::operator>=(const CFraction &p) { if (*this<p) return false; return true; }// 分数比较大小bool CFraction::operator<=(const CFraction &p) { if (*this>p) return false; return true; } // 分数取正号CFraction CFraction:: operator+() { return *this; }// 分数取负号 CFraction CFraction:: operator-() { CFraction x; x.nume=-nume; x.deno=deno; return x; }// 分数取倒数 CFraction CFraction:: operator~() { CFraction x; x.nume=deno; x.deno=nume; //未对原分子为0的情况进行处理 if(x.deno<0) //保证负分数的负号在分子上 { x.deno=-x.deno; x.nume=-x.nume; } return x; } int main() { CFraction c1,c2,c3; cin>>c1>>c2; c3=c1+c2; cout<<"c1+c2="<<c3<<endl; c3=c1-c2; cout<<"c1-c2="<<c3<<endl; c3=c1*c2; cout<<"c1*c2="<<c3<<endl; c3=c1/c2; cout<<"c1/c2="<<c3<<endl; c3=-c1; cout<<"-c1="<<c3<<endl; c3=+c1; cout<<"+c1"<<c3<<endl; c3=~c1; cout<<"~c1"<<c3<<endl; cout<<c1; if (c1>c2) cout<<"大于"; if (c1<c2) cout<<"小于"; if (c1==c2) cout<<"等于"; cout<<c2<<endl; return 0; }
0 0
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载(1)
- 第十二周上机实践项目-项目1-实现复数类中的运算符重载
- 第十二周上机实践项目-项目1-(2)-实现复数类中的运算符重载
- 第十二周上机实践项目-项目1-3-实现复数类中的运算符重载
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (2)
- 第十二周上机实践项目 项目1-实现复数类中的运算符重载 (3)
- 第十二周项目一实现复数中的运算符重载
- 第十二周项目1-实现复数类中的运算符重载(1)
- 第十二周项目1-实现复数类中的运算符重载(1)
- 第十二周项目1-实现复数类中的运算符重载——1
- 第十二周项目1实现复数类中的运算符重载1
- 第十二周上机实践项目1(1):实现复数类中的运算符重载
- 第十二周项目1-实现复数类中的运算符重载(1)
- 第十二周项目1-实现复数类中的运算符重载(1.2友元函数)
- 第十二周项目一-实现复数类中的运算符重载(1)
- 第十二周项目1-实现复数类中的运算符重载(2)
- 第十二周项目1-实现复数类中的运算符重载(3)
- 第十二周项目2:实现复数类中的运算符重载(1)
- Codeforces Round #353 (Div. 2) B.Restoring Painting
- 隐藏分区设置与查看
- Alert Log中“Fatal NI connect error 12170”错误问题
- jQuery对象和DOM对象区别和联系
- 哈希长度扩展攻击解析
- 第十二周【项目1-实现复数类中的运算符重载】
- js检测输入框是否为空或是只输入的空格
- __attribute__((packed))详解
- 第十一周阅读项目(5)
- 第十三周项目2.1—动物这样叫
- tomcat7+jdk的keytool生成证书 配置https
- 版本控制git与eclipse的结合使用
- 当下最流行的10大H5前端框架
- NSData和NSString、NSDictionary、NSArray互转