分数类中的运算符重载
来源:互联网 发布:linux cp命令 文件夹 编辑:程序博客网 时间:2024/05/16 15:10
/** 程序的版权和版本声明部分* Copyright (c)2014, 烟台大学计算机学院学生* All rightsreserved.* 文件名称:a.cpp* 作 者:孔云* 完成日期:2014年4月21日* 版 本 号: v1.0* 输入描述:主函数中给出。* 问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。* 输出描述:分数的比较结果、加减运算结果。*/#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 set(int nu=0,int de=1); void display(); bool operator>(CFraction &t); bool operator<(CFraction &t); bool operator>=(CFraction &t); bool operator<=(CFraction &t); bool operator==(CFraction &t); bool operator!=(CFraction &t); CFraction operator+(CFraction &t); CFraction operator-(CFraction &t); CFraction operator*(CFraction &t); CFraction operator/(CFraction &t); CFraction simplfy(int ,int);//分数化简};//重载函数的实现及用于测试的main()函数void CFraction::set(int nu,int de){ nume=nu; deno=de;}void CFraction::display(){ cout<<nume<<"/"<<deno<<endl;}CFraction CFraction::simplfy(int n,int d){ CFraction t;//声明一个CFraction类类型变量返回值为CFraction类 int x; if(n<d) { x=n; n=d; d=x; } while(d%n!=0) { x=d%n; d=n; n=x; } t.nume=nume/n; t.deno=deno/n; return t;}//二目的比较运算符重载bool CFraction::operator>(CFraction &t){ if(nume*t.deno>t.nume*deno)return true; else return false;}bool CFraction::operator<(CFraction &t){ if(nume*t.deno<t.nume*deno)return true; else return false;}bool CFraction::operator>=(CFraction &t){ if(*this<t)return false; return true;}bool CFraction::operator<=(CFraction &t){ if(*this>t)return false; return true;}bool CFraction::operator==(CFraction &t){ if(*this>=t&&*this<=t)return true; return false;}bool CFraction::operator!=(CFraction &t){ if(*this==t)return false; return true;}//二目的加减乘除运算符重载CFraction CFraction::operator+(CFraction &t){ CFraction a; a.nume=nume*t.deno+deno*t.nume; a.deno=deno*t.deno; return a.simplfy(a.nume,a.deno);}CFraction CFraction::operator-(CFraction &t){ CFraction b; b.nume=nume*t.deno-deno*t.nume; b.deno=deno*t.deno; return b.simplfy(b.nume,b.deno);}CFraction CFraction::operator*(CFraction &t){ CFraction c; c.nume=nume*t.nume; c.deno=deno*t.deno; return c.simplfy(c.nume,c.deno);}CFraction CFraction::operator/(CFraction &t){ CFraction d; d.nume=nume*t.deno; d.deno=deno*t.nume; return d.simplfy(d.nume,d.deno);;}int main(){ CFraction p(4,5),q(6,8),m; cout<<"分数比较:"<<endl; if(q>p)cout<<"4/5<6/8"<<endl; if(q<p)cout<<"4/5>6/8"<<endl; if(q<=p)cout<<"4/5≥6/8"<<endl; if(q>=p)cout<<"4/5≤6/8"<<endl; if(q==p)cout<<"4/5==6/8"<<endl; if(q!=p)cout<<"4/5!=6/8"<<endl; cout<<"分数运算:"<<endl; m=q+p; cout<<"分数相加和:"; m.display(); m=q-p; cout<<"分数相减差:"; m.display(); m=p*q; cout<<"分数相乘积:"; m.display(); m=p/q; cout<<"分数相除商:"; m.display(); return 0;}
心得体会:将分数化简函数作为类中的成员函数,应该注意参数类型、函数类型,及其返回值类型,不应该混乱!
0 0
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类中的运算符重载
- 分数类--运算符重载
- 运算符重载 分数类
- 实现分数类类中的运算符重载
- 4.18,19,20三日学习日志汇总
- getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this、getContext()之间的区别
- 解决jacob调用word处理doc文件的内存溢出问题
- cdn
- 安卓学习之路_20140421_ListView、ArrayAdapter、SimpleAdapter
- 分数类中的运算符重载
- 使用FileSystem类进行文件读写及查看文件信息
- JS之RegExp对象(二)
- windows下安装配置Haskell的IDE leksah
- Improving Python —— property
- Android——编译release版签名系统
- sudo apt-get install ia32-libs
- 模块 制造你自己的模块
- GMainLoop的原型