第8周项目3-分数类的运算符重载(续)
来源:互联网 发布:旅游网站实时数据来源 编辑:程序博客网 时间:2024/05/16 05:27
/**copyright (c)2015,烟台大学计算机学院*All rights reserved*文件名称:project.cpp*作者:孙春红*完成日期:2015年5月12日*版本号:v1.0**问题描述:在第8周项目3基础上(1)定义分数的一目运算+和-,分别代表分数取正和求反,将“按位取反运算符”~重载为分数的求倒数运算。(2)定义分数类中<<和>>运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。。*输入描述:略。*程序输出:略。*/#include<iostream>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: //构造函数及运算符重载的函数声明 CFraction(int nu=0,int de=1):nume(nu),deno(de) {} void simplify(); friend ostream& operator <<(ostream& cout,CFraction&c); friend istream& operator >>(istream& cin ,CFraction&c); friend bool operator > (CFraction &c1,CFraction &c2); friend bool operator < (CFraction &c1,CFraction &c2); friend bool operator >=(CFraction &c1,CFraction &c2); friend bool operator <=(CFraction &c1,CFraction &c2); friend bool operator ==(CFraction &c1,CFraction &c2); friend bool operator !=(CFraction &c1,CFraction &c2); friend CFraction operator +(CFraction &c1,CFraction &c2); friend CFraction operator -(CFraction &c1,CFraction &c2); friend CFraction operator *(CFraction &c1,CFraction &c2); friend CFraction operator /(CFraction &c1,CFraction &c2); CFraction operator +(); CFraction operator -(); CFraction operator ~();};//重载函数的实现void CFraction::simplify(){ int r,m,n; m=deno; n=nume; while(r=m%n) // 求m,n的最大公约数 { m=n; n=r; } deno/=n; nume/=n;}bool operator > (CFraction &c1,CFraction &c2){ if ((c1.nume*c2.deno)>(c2.nume*c1.deno)) return true; return false;}bool operator < (CFraction &c1,CFraction &c2){ if ((c1.nume*c2.deno)<(c2.nume*c1.deno)) return true; return false;}bool operator >=(CFraction &c1,CFraction &c2){ if (c1<c2) return false; return true;}bool operator <=(CFraction &c1,CFraction &c2){ if (c1>c2) return false; return true;}bool operator ==(CFraction &c1,CFraction &c2){ if ((c1<c2)||(c1>c2)) return false; return true;}bool operator !=(CFraction &c1,CFraction &c2){ if (c1==c2) return false; return true;}CFraction operator +(CFraction &c1,CFraction &c2){ CFraction c; c.deno=c1.deno*c2.deno; c.nume=c1.nume*c2.deno+c2.nume*c1.deno; c.simplify(); return c;}CFraction operator -(CFraction &c1,CFraction &c2){ CFraction c; c.deno=c1.deno*c2.deno; c.nume=c1.nume*c2.deno-c2.nume*c1.deno; c.simplify(); return c;}CFraction operator *(CFraction &c1,CFraction &c2){ CFraction c; c.deno=c1.deno*c2.deno; c.nume=c1.nume*c2.nume; c.simplify(); return c;}CFraction operator /(CFraction &c1,CFraction &c2){ CFraction c; c.deno=c1.deno*c2.nume; c.nume=c1.nume*c2.deno; c.simplify(); return c;}CFraction CFraction::operator +(){CFraction c; if (nume<0) { c.nume=-nume; } if (deno<0) { c.deno=-deno; } return c;}CFraction CFraction::operator -(){ CFraction c; c.nume=-nume; c.deno=deno; return c;}CFraction CFraction::operator~(){ CFraction c; c.nume=deno; c.deno=nume; if(c.deno<0) { c.deno=-c.deno; c.nume=-c.nume; } return c;}ostream& operator <<(ostream& cout,CFraction&c){ cout<<"("<<c.nume<<"/"<<c.deno<<")"<<endl; return cout;}istream& operator >>(istream& cin ,CFraction&c){ cin>>c.nume>>c.deno; return cin;}int main(){ CFraction x,y,s; cout<<"输入x: "; cin>>x; cout<<"输入y: "; cin>>y; s=x+y; cout<<"x+y="<<s; s=x-y; cout<<"x-y="<<s; s=x*y; cout<<"x*y="<<s; s=x/y; cout<<"x/y="<<s; s=-x; cout<<"-x="<<s; s=+x; cout<<"+x="<<s; s=~x; cout<<"x的倒数: "<<s; cout<<"x是:"<<x; cout<<"y是:"<<y; if (x>y) cout<<"大于"; if (x<y) cout<<"小于"; if (x==y) cout<<"等于"; return 0;}
运行结果:
知识点总结:
学会定义单目运算符以及输入输出的运算符
0 0
- 第8周项目3-分数类的运算符重载(续)
- 第9周项目3分数类的运算符重载(续)
- 第8周项目3(2)分数类的运算符重载(拓展)
- 第7周-项目3-分数类中的运算符重载-拓展分数的加减乘除(分数与整型 )
- 第8周-项目3-分数类中的运算符重载(续)-++、--、>>、<<
- 第8周项目3-分数类中的运算符重载(续)
- 第7周-项目3-分数类中的运算符重载-分数的加减乘除
- 第8周项目3-2分数类与整数的运算符重载
- 第8周项目3分数运算符重载
- 第9周项目3-分数类中的运算符重载(续)
- 第9周项目3-分数类中的运算符重载续(1)
- 第9周项目3-分数类中的运算符重载续(2)
- 第8周项目三实现分数类的运算符重载
- 第9周项目3 分数类中的运算符重载(续)
- C++第8周项目3 - 分数类中的运算符重载
- C++第8周(春)项目3 分数类中的运算符重载
- 第8周项目3-1分数类中的运算符重载
- 第8周项目3-分数类中的运算符重载(1)
- 手动编译Java Web 的Hibernate的工程
- 第八周项目二-实现Time类中的运算符重载
- Verilog的模块编程及连接
- android获取内置和外置SD卡路径
- 内核中的static inline
- 第8周项目3-分数类的运算符重载(续)
- 第九周 【项目2-Time类中的运算符重载(续)】
- Rust猜数字之处理猜测
- 第九周项目一 复数问题 增加一目- 与重载<<和>>
- 运载符重载(友元函数)
- 2015年第九周项目一:复数类中的运算符重载(续)(2)
- 第9周项目1-复数类中的运算符重载(续)
- source insight 的一些快捷键
- 第九周项目4 我的向量类