2015年第八周项目三:分数类中的运算符重载(1)
来源:互联网 发布:c语言的指针编程例题 编辑:程序博客网 时间:2024/06/08 15:05
#include<iostream>#include<Cmath>#include<cstdlib>using namespace std;int gcd(int m, int n);class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void set(int nu=0,int de=1); //置值,改变值时用 void display(); void simplify();//化简(使分子分母没有公因子) //放大n倍,如2/3放大5倍为10/3 bool operator > ( CFraction& c); bool operator < ( CFraction& c); bool operator >= ( CFraction& c); bool operator <= ( CFraction& c); bool operator == ( CFraction& c); bool operator != ( CFraction& c); //二目的加减乘除运算符的重载 CFraction operator+( CFraction& c); CFraction operator-( CFraction& c); CFraction operator*( CFraction& c); CFraction operator/( CFraction& c);};void CFraction::display(){ cout<<nume<<"/"<<deno<<endl;}bool CFraction::operator>( CFraction& c){ if((nume*c.deno)>(c.nume*deno))return true; else return false;}bool CFraction::operator==( CFraction& c){ if((nume*c.deno)==(c.nume*deno))return true; else return false;}bool CFraction::operator<( CFraction& c){ if(*this>c||*this==c)return false; else return true;}bool CFraction::operator>=( CFraction& c){ if(*this<c)return false; else return true;}bool CFraction::operator<=( CFraction& c){ if(*this>c)return false; else return true;}bool CFraction::operator!=( CFraction& c){ if(*this==c)return false; else return true;}CFraction CFraction:: operator+( CFraction& c){ CFraction t; t.nume=nume*c.deno+c.nume*deno; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction:: operator-( CFraction& c){ CFraction t; t.nume=nume*c.deno-c.nume*deno; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction:: operator*( CFraction& c){ CFraction t; t.nume=nume*c.nume; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction:: operator/(CFraction &c){ CFraction t; if (!c.nume) return *this; //除法无效时,这种情况需要考虑,但这种处理仍不算合理 t.nume=nume*c.deno; t.deno=deno*c.nume; t.simplify(); return t;}CFraction::CFraction(int nu,int de) //构造函数,初始化用{ if (de!=0) { nume=nu; deno=de; } else { cerr<<"初始化中发生错误,程序退出\n"; exit(0); }}void CFraction::set(int nu,int de) //置值,改变值时用{ if (de!=0) //如果不合适,改变值操作无效 { nume=nu; deno=de; }}// 分数化简,使分子分母没有公因子void CFraction::simplify(){ int n=gcd(deno, nume); deno/=n; // 化简 nume/=n;}// 求m,n的最大公约数int gcd(int m, int n) //这个函数可以定义为类的成员函数,也可以为一般函数{ int r; if (m==0) { return n; } while(r=m%n) // 求m,n的最大公约数 { m=n; n=r; } return n;}int main(){ CFraction x(1,3),y(-5,10),s; cout<<"分数x=1/3 y=-5/10"<<endl; s=x+y; cout<<"x+y="; s.display(); s=x-y; cout<<"x-y="; s.display(); s=x*y; cout<<"x*y="; s.display(); s=x/y; cout<<"x/y="; s.display(); x.display(); if (x>y) cout<<"大于"<<endl; if (x<y) cout<<"小于"<<endl; if (x==y) cout<<"等于"<<endl; y.display(); cout<<endl; return 0;}
0 0
- 2015年第八周项目三:分数类中的运算符重载(1)
- 第八周项目三 分数类中的运算符重载-(1)分数的加减乘除
- 2015年第八周项目三:分数类中的运算符重载(2)
- 第八周项目三----分数类中的运算符重载
- 第八周 项目三:分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载
- 第八周项目三--分数类中的运算符重载
- 第八周项目三-分数类中的运算符重载
- 第八周(项目三1)——分数类中的运算符重载.
- 第八周 项目三-分数类中的运算符重载(1)
- 第八周 项目三(1):分数类中的运算符重载
- 第八周项目三(1):分数类中的运算符重载
- 第八周 项目三 分数类中的运算符重载(1)
- 15第八周项目三——分数类中的运算符重载(1)
- 第八周 课后实践:项目三——分数类中的运算符重载(1)
- 第八周项目三——分数类中的运算符重载(1)
- 第八周 项目三 (1)分数类中的运算符重载
- 第八周 项目三(1) 分数类中的运算符重载
- 五大常用算法之一:分治算法
- 郁金香反汇编逆向与外挂(71)
- Swift 基础语法
- Java Lambda表达式入门
- ORA-12170:TNS:连接超时(注意局域网内)
- 2015年第八周项目三:分数类中的运算符重载(1)
- http connection
- C++基础学习—C++概述
- memcmp函数
- 我的向量类
- OpenWRT添加模块Makefile
- Oracle学习(二)之控制文件多工
- C#几种截取字符串的方法小结
- javascript对象的使用