第十三周项目1-分数类中的运算符重载——2
来源:互联网 发布:手提包女士知乎 编辑:程序博客网 时间:2024/06/05 10:43
/**Copyright (c) 2016,烟台大学计算机学院*All rights reserved.*文件名称 :*作 者 : 徐聪*完成日期 : 2016年5月26号*版 本 号 : v6.0**问题描述 :*/#include<iostream>using namespace std;class CFraction{private: int nume; //分子 int deno; //分母public: CFraction(int n=1,int d=1):nume(n),deno(d){} //类与类的加、减、乘、除运算 CFraction operator+(CFraction &c1); CFraction operator-(CFraction &c1); CFraction operator*(CFraction &c1); CFraction operator/(CFraction &c1); //类与数的加、减、乘、除运算 CFraction operator+(int a); CFraction operator-(int a); CFraction operator*(int a); CFraction operator/(int a); friend CFraction operator+(int a,CFraction &c1); friend CFraction operator-(int a,CFraction &c1); friend CFraction operator*(int a,CFraction &c1); friend CFraction operator/(int a,CFraction &c1); friend int operator>(CFraction &c1,CFraction &c2); void qualify(); void show()const;}; //类与类的加、减、乘、除运算CFraction CFraction::operator+(CFraction &c1){ return CFraction(c1.deno*nume+c1.nume*deno,deno*c1.deno);}CFraction CFraction::operator-(CFraction &c1){ return CFraction(c1.deno*nume-c1.nume*deno,deno*c1.deno);}CFraction CFraction::operator*(CFraction &c1){ return CFraction(nume*c1.nume,deno*c1.deno);}CFraction CFraction::operator/(CFraction &c1){ return CFraction(nume*c1.deno,deno*c1.nume);}//类与数的加、减、乘、除运算CFraction CFraction::operator+(int a){ return CFraction(a*deno+nume,deno);}CFraction CFraction::operator-(int a){ return CFraction(nume-a*deno,deno);}CFraction CFraction::operator*(int a){ return CFraction(nume*a,deno);}CFraction CFraction::operator/(int a){ return CFraction(nume,deno*a);}//类与数的加、减、乘、除运算,运算符合交换律CFraction operator+(int a,CFraction &c1){ return CFraction(a*c1.deno+c1.nume,c1.deno);}CFraction operator-(int a,CFraction &c1){ return CFraction(a*c1.deno-c1.nume,c1.deno);}CFraction operator*(int a,CFraction &c1){ return CFraction(c1.nume*a,c1.deno);}CFraction operator/(int a,CFraction &c1){ return CFraction(c1.deno*a,c1.nume);}int operator>(CFraction &c1,CFraction &c2){ if(c1.deno!=c2.deno) { if(c1.deno>c2.deno) return 0; else return 1; } if(c1.deno==c2.deno) { if(c1.nume>c2.nume) return 1; else return 0; }}void CFraction::qualify(){ int k=1,n=nume,d=deno; while(deno!=0) { k=nume%deno; nume=deno; deno=k; } n=n/nume; d=d/nume; nume=n; deno=d;}void CFraction::show()const{ if(deno==1) cout<<nume<<endl; else cout<<nume<<'/'<<deno<<endl;}int main(){ CFraction c1(1,2),c2(3,4),c3,a(1,3); int i=2; c3=c1+c2; c3.qualify(); cout<<"(1/2)+(3/4)="; c3.show(); c3=c1-c2; c3.qualify(); cout<<"(1/2)-(3/4)="; c3.show(); c3=c1*c2; c3.qualify(); cout<<"(1/2)*(3/4)="; c3.show(); c3=c1/c2; c3.qualify(); cout<<"(1/2)/(3/4)="; c3.show(); c3=a+i; c3.qualify(); cout<<"(1/3)+2="; c3.show(); c3=i+a; c3.qualify(); cout<<"2+(1/3)="; c3.show(); c3=45+a; c3.qualify(); cout<<"45+(1/3)="; c3.show(); c3=a*27; c3.qualify(); cout<<"(1/3)*27="; c3.show(); c3=5/a; c3.qualify(); cout<<"5/(1/3)="; c3.show(); if(c1>c2)cout<<"(1/2)>(3/4)"<<endl; else cout<<"(1/2)<(3/4)"<<endl; return 0;}
运行结果
0 0
- 第十三周项目1-分数类中的运算符重载——2
- 第十三周项目 1分数类中的运算符重载
- 第十三周【项目 1分数类中的运算符重载】
- 第十三周项目1.2—分数中的运算符重载
- 第十三周项目1.3—分数中的运算符重载
- 第十三周项目1.2—分数中的运算符重载
- 第十三周项目1.3—分数中的运算符重载
- 第十三周上机时间项目——项目1-分数类中的运算符重载
- 第十三周项目1-分数类中的运算符重载——1
- 第十三周项目1——分数类中的运算符重载
- 第十三周上机实践——项目1-分数类中的运算符重载
- 第十三周项目-项目1-(2)-分数类中的运算符重载
- 第十三周项目58-分数类中的运算符重载
- 第十三周项目一-分数类中的运算符重载
- 第十三周项目一-分数类中的运算符重载
- 第十三周项目:分数类中的运算符重载
- 第十三周上机实践项目1(2):分数类中的运算符重载
- 第十三周项目1.4—分数类中的运算符重载
- http in iOS
- 关于开始
- 试试
- IO负载高的来源定位
- 第13周实践项目4立体类族共有的抽象类
- 第十三周项目1-分数类中的运算符重载——2
- 324. Wiggle Sort II
- jquery选择器案例
- Ubuntu下Xilinx Linux内核编译问题,出现“缺少ncurses”libraries
- C# 序列化与反序列化
- 巧用location.hash保存页面状态
- 【Halcon】Halcon颜色识别之classify_fuses_gmm_based_lut.hdev
- css-去除默认样式
- [python]新手写爬虫v2.5(使用代理的异步爬虫)