第八周项目3(2)-分数类的运算符重载
来源:互联网 发布:win7桌面日程安排软件 编辑:程序博客网 时间:2024/06/06 09:35
/* *Copyright (c) 2014, 烟台大学计算机学院 *All rights reserved. *文件名称:week8-3-2.cpp *作者:高赞 *完成日期:2015年 4 月 27 日 *版本号:v1.0 * * 问题描述:分数的加减乘除和比较以及和整型数据的运算 */ #include <iostream>#include "CFraction.h"using namespace std;int main(){ CFraction f1(5,10),f2(2,5),f3; cout<<"f1="; f1.simplify(); f1.display(); cout<<"f2="; f2.simplify(); f2.display(); 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; f3=f1+f2; f3.simplify(); cout<<"f1+f2="; f3.display(); f3=f1-f2; f3.simplify(); cout<<"f1-f2="; f3.display(); f3=f1*f2; f3.simplify(); cout<<"f1*f2="; f3.display(); f3=f1/f2; f3.simplify(); cout<<"f1/f2="; f3.display(); f3=f1+2; f3.simplify(); cout<<"f1+2="; f3.display(); f3=f1-2; f3.simplify(); cout<<"f1-2="; f3.display(); f3=f1*2; f3.simplify(); cout<<"f1*2="; f3.display(); f3=f1/2; f3.simplify(); cout<<"f1/2="; f3.display(); f3=2+f2; f3.simplify(); cout<<"2+f2="; f3.display(); f3=2-f2; f3.simplify(); cout<<"2-f2="; f3.display(); f3=2*f2; f3.simplify(); cout<<"2*f2="; f3.display(); f3=2/f2; f3.simplify(); cout<<"2/f2="; f3.display(); return 0;}
CFraction类
#ifndef CFRACTION_H_INCLUDED#define CFRACTION_H_INCLUDEDclass 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); 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); 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); void display();};#endif // CFRACTION_H_INCLUDED
定义成员函数和友元函数
#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); }}void CFraction::display(){ if(deno==1) cout<<nume<<endl; else cout<<nume<<"/"<<deno<<endl;}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;}
分数的简化也要考虑到负号的前置和抵消以及分母为1时的省略。
0 0
- 第八周项目3-2:分数类中的运算符重载(涉及分数和整数的运算)
- 第八周项目三 分数类中的运算符重载-(2)分数与分数、分数与整数的四则运算
- 第八周 项目3 分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3-分数类中的运算符重载
- 第八周 项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3 分数类中的运算符重载
- 第八周项目3--分数类运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3(2)-分数类的运算符重载
- 第八周项目三 分数类中的运算符重载-(1)分数的加减乘除
- 第八周上机实践项目3——分数类的运算符重载(1)
- 第八周项目3(1)-分数类的运算符重载
- poj2155Matrix
- GCC -D预处理
- printf笔记
- C# 数字 日期 ToString()
- 由_layer.contents = (__bridge id)image.CGImage想到的
- 第八周项目3(2)-分数类的运算符重载
- Ubuntu14编译ffmpeg2.6.2为Android使用库
- Mac外接显示器设置(四种模式)
- after触发器
- linux中iptables设置详细(防火墙)
- 如何确认oracle客户端中的TNSNAMES中的service_name
- 五一假期超越同行的减法优化法则
- javascript-ajax异步请求
- 微软的ImageLoad