第九周项目3(2)-分数类中的运算符重载(续)
来源:互联网 发布:sql select 两个字段 编辑:程序博客网 时间:2024/05/18 01:48
/* *Copyright (c) 2014, 烟台大学计算机学院 *All rights reserved. *文件名称:week9-3-2.cpp *作者:高赞 *完成日期:2015年 5 月 5 日 *版本号:v1.2 * * 问题描述:定义分数类中<<和>>运算符重载,实现分数的输入输出 */#include <iostream>#include "CFraction.h"using namespace std;int main(){ CFraction f1(5,10),f2,f3; cout<<"输入f2"; cin>>f2; cout<<"f1="<<f1; cout<<"f2="<<f2; cout<<endl; if (f1>f2) cout<<"f1 > f2"<<endl; if (f1<f2) cout<<"f1 < f2"<<endl; if (f1==f2) cout<<"f1 == f2"<<endl; if (f1!=f2) cout<<"f1 != f2"<<endl; if (f1>=f2) cout<<"f1 >= f2"<<endl; if (f1<=f2) cout<<"f1 <= f2"<<endl; cout<<endl; f3=f1+f2; cout<<"f1+f2="<<f3; f3=f1-f2; cout<<"f1-f2="<<f3; f3=f1*f2; cout<<"f1*f2="<<f3; f3=f1/f2; cout<<"f1/f2="<<f3; f3=f1+2; cout<<"f1+2="<<f3; f3=f1-2; cout<<"f1-2="<<f3; f3=f1*2; cout<<"f1*2="<<f3; f3=f1/2; cout<<"f1/2="<<f3; f3=2+f2; cout<<"2+f2="<<f3; f3=2-f2; cout<<"2-f2="<<f3; f3=2*f2; cout<<"2*f2="<<f3; f3=2/f2; cout<<"2/f2="<<f3; f3=-f2; cout<<"-f2="<<f3; f3=+f2; cout<<"+f2="<<f3; f3=~f2; cout<<"f2倒数:"<<f3; return 0;}
CFraction.h
#ifndef CFRACTION_H_INCLUDED#define CFRACTION_H_INCLUDED#include <iostream>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1); void simplify(); //化简(使分子分母没有公因子) CFraction operator+(const CFraction &f2); CFraction operator-(const CFraction &f2); CFraction operator*(const CFraction &f2); CFraction operator/(const CFraction &f2); CFraction operator+(const int i); CFraction operator-(const int i); CFraction operator*(const int i); CFraction operator/(const int i); CFraction operator+(); CFraction operator-(); CFraction operator~(); bool operator > (const CFraction &f2); bool operator < (const CFraction &f2); bool operator >= (const CFraction &f2); bool operator <= (const CFraction &f2); bool operator == (const CFraction &f2); bool operator != (const CFraction &f2); friend CFraction operator+(const int i,const CFraction &f2); friend CFraction operator-(const int i,const CFraction &f2); friend CFraction operator*(const int i,const CFraction &f2); friend CFraction operator/(const int i,const CFraction &f2); friend istream &operator>>(istream &,CFraction &); friend ostream &operator<<(ostream &,CFraction &);};#endif // CFRACTION_H_INCLUDED
CFraction,cpp
#include "CFraction.h"#include <iostream>#include <cstdlib>using namespace std;CFraction::CFraction(int nu,int de){ if(de==0) { cout<<"初始化失败,分母不能为零。"<<endl; exit(0); } else { nume=nu; deno=de; }}void CFraction::simplify(){ int a=nume,b=deno,c; while (b!=0) { c=a%b; a=b; b=c; } nume=nume/a; deno=deno/a; if((nume>0&&deno<0)) { nume*=(-1); deno*=(-1); } if(nume<0&&deno<0) { nume*=(-1); deno*=(-1); }}CFraction CFraction::operator+(const CFraction &f2){ return CFraction(nume*f2.deno+f2.nume*deno,deno*f2.deno);}CFraction CFraction::operator-(const CFraction &f2){ return CFraction(nume*f2.deno-f2.nume*deno,deno*f2.deno);}CFraction CFraction::operator*(const CFraction &f2){ return CFraction(nume*f2.nume,deno*f2.deno);}CFraction CFraction::operator/(const CFraction &f2){ return CFraction(nume*f2.deno,deno*f2.nume);}CFraction CFraction::operator+(const int i){ CFraction f1(i,1); return *this+f1;}CFraction CFraction::operator-(const int i){ CFraction f1(i,1); return *this-f1;}CFraction CFraction::operator*(const int i){ CFraction f1(i,1); return *this*f1;}CFraction CFraction::operator/(const int i){ CFraction f1(i,1); return *this/f1;}CFraction operator+(const int i,const CFraction &f2){ CFraction f1(i,1); return f1+f2;}CFraction operator-(const int i,const CFraction &f2){ CFraction f1(i,1); return f1-f2;}CFraction operator*(const int i,const CFraction &f2){ CFraction f1(i,1); return f1*f2;}CFraction operator/(const int i,const CFraction &f2){ CFraction f1(i,1); return f1/f2;}bool CFraction::operator > (const CFraction &f2){ if(nume*f2.deno>f2.nume*deno) return true; else return false;}bool CFraction::operator < (const CFraction &f2){ if(nume*f2.deno<f2.nume*deno) return true; else return false;}bool CFraction::operator >= (const CFraction &f2){ if(nume*f2.deno<f2.nume*deno) return false; else return true;}bool CFraction::operator <= (const CFraction &f2){ if(nume*f2.deno>f2.nume*deno) return false; else return true;}bool CFraction::operator == (const CFraction &f2){ if(nume*f2.deno==f2.nume*deno) return true; else return false;}bool CFraction::operator != (const CFraction &f2){ if(nume*f2.deno==f2.nume*deno) return false; else 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; x.simplify(); return x;}istream &operator>>(istream &input,CFraction &f){ cout<<"分子和分母:"; input>>f.nume>>f.deno; while(f.deno==0) { cout<<"分母不能为零,重新输入分母:"; input>>f.deno; } return input;}ostream &operator<<(ostream &output,CFraction &f){ f.simplify(); if(f.deno==1) output<<f.nume<<endl; else output<<f.nume<<"/"<<f.deno<<endl; return output;}
0 0
- 第九周项目3(2)-分数类中的运算符重载(续)
- 第九周--项目3-分数类中的运算符重载
- 2015年第九周项目三:分数类中的运算符重载(续)(2)
- 第九周项目3(1)-分数类中的运算符重载(续)
- 第九周上机实践项目3——分数类中的运算符重载(续)
- 第九周项目3——分数类中的运算符重载(续)
- 第九周 项目3 分数类中的运算符重载(续)
- 第九周 【项目3-分数类中的运算符重载(续)】
- 第九周【项目3-分数类中的运算符重载(续)】
- 第九周 项目3-分数类中的运算符重载(续)
- 第九周项目3——分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- 第九周项目3--分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- 第九周上机项目3 分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- 第九周项目3:分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- Step into MongoDB - 16 - 账号管理
- 数字证书
- Step into Scala - 15 - 特质
- office2007每次打开都要配置文件,怎么取消配置
- jsp页面获取数据方法
- 第九周项目3(2)-分数类中的运算符重载(续)
- JavaScript 函数回调
- mysql数据库下hibernate无法自动建表
- Scala字符串处理常用函数
- hdu5215(判环总结)
- csu 1605: Target Sudoku(Dancing Links)
- 解决三星ARM11开发板图片采集程序源码出现的Bug
- Azure杂七杂八系列(一) - 如何删除Azure上的虚拟网络
- YII2 视图中引入js代码块儿