第十三周项目1分数类的重载
2016-05-26 09:27
183 查看
/*Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称 : *作 者 : 李钊 *完成日期 : 2016年5月26号 *版 本 号 : v1.0 * *问题描述 : 分数类的重载 *输入描述 : *程序输出 : 分数的加减乘除与比较 */ #include <iostream> #include <cmath> using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int n=0,int d=1):nume(n),deno(d){} CFraction operator+(const CFraction &c); CFraction operator-(const CFraction &c); CFraction operator*(const CFraction &c); CFraction operator/(const CFraction &c); bool operator>(const CFraction &c); bool operator<(const CFraction &c); bool operator<=(const CFraction &c); bool operator>=(const CFraction &c); bool operator==(const CFraction &c); bool operator!=(const CFraction &c); void display(); //构造函数及运算符重载的函数声明 }; CFraction CFraction::operator+(const CFraction &c) { CFraction f; f.nume=nume*c.deno+c.nume*deno; f.deno=deno*c.deno; return f; } CFraction CFraction::operator-(const CFraction &c) { CFraction f; f.nume=nume*c.deno-c.nume*deno; f.deno=deno*c.deno; return f; } CFraction CFraction::operator*(const CFraction &c) { CFraction f; f.deno=deno*c.deno; f.nume=nume*c.nume; return f; } CFraction CFraction::operator/(const CFraction &c) { CFraction f; f.nume=nume*c.deno; f.deno=deno*c.nume; return f; } bool CFraction::operator<(const CFraction &c) { int a,b,h; a=nume*c.deno; b=c.nume*deno; h=a-b; if(h>0)return false; else return true; } bool CFraction::operator>(const CFraction &c) { int a,b,h; a=nume*c.deno; b=c.nume*deno; h=a-b; if(h<0)return false; else return true; } bool CFraction::operator<=(const CFraction &c) { int a,b,h; a=nume*c.deno; b=c.nume*deno; h=a-b; if(h>0||h==0)return false; else return true; } bool CFraction::operator>=(const CFraction &c) { int a,b,h; a=nume*c.deno; b=c.nume*deno; h=a-b; if(h<0||h==0)return false; else return true; } bool CFraction::operator==(const CFraction &c) { int a,b,h; a=nume*c.deno; b=c.nume*deno; h=a-b; if(h!=0)return false; else return true; } bool CFraction::operator!=(const CFraction &c) { int a,b,h; a=nume*c.deno; b=c.nume*deno; h=a-b; if(h==0)return false; else return true; } void CFraction::display() { cout<<nume<<"/"<<deno<<endl; } int main() { CFraction c1(1,3); CFraction c2(3,4); CFraction c3; cout<<"c1-c2"<<endl; c3=c1-c2; c3.display(); cout<<"c1+c2"<<endl; c3=c1+c2; c3.display(); cout<<"c1*c2:"<<endl; c3=c1*c2; c3.display(); cout<<"c1/c2"<<endl; c3=c1/c2; c3.display(); cout<<"c1与c2的关系是:"; if(c1>c2) cout<<"大于"<<endl; if(c1<c2) cout<<"小于"<<endl; if(c1!=c2) cout<<"不等于"<<endl; if(c1==c2) cout<<"等于"<<endl; return 0; }
运行结果:
学习心得:
加减乘除的运算符重载
知识点总结:
分数类的加减乘除需要有分数的通分
相关文章推荐
- 什么是DPDK
- linux 系统监控、诊断工具之 IO wait
- 单向散列函数
- MapReduce中的Join算法
- 使用putty可以访问centos的中文内容
- CentOS of MySQL command
- 安卓gridview 网格,多行多列实现
- 安卓gridview 网格,多行多列实现
- MVC之Ajax.BeginForm使用详解之更新列表
- 第十三周实践项目-阅读、修改和运行关于交通工具类的程序(1)
- 微信扫码支付+Asp.Net MVC
- 定位
- ios 代理
- 第十三周项目1——分数类中的运算符重载
- 测试阿里云OSS
- 临时
- eclipse3.7 安装github插件错误解决
- 根目录扩展
- AFNetwork 作用和用法详解
- YII页面缓存