全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1. 有理数运算有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而就为无理数。在C+中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。对有理数的各种操作都可以用重载运算符来实现。定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符=实现判定两个有理数是否相等。写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。#include using namespace std; /numerator 分子 /denominator分母 int gcd(int m,int n) /求最大公约数函数,用于约分 if(n=0)return m; return gcd(n,m%n); class fraction private: int numer; int denom; public: fraction(int n=0,int d=1)/带默认参数的构造函数,整数与分数的运算迎刃而解 numer=n; denom=d; void rev(fraction &a)numer=a.denom;denom=a.numer;/倒数friend ostream& operator(std:istream&, fraction&); /重载输入friend bool operator=(const fraction&, const fraction&); /判断有理数是否相等,以下类似friend bool operator(const fraction&, const fraction&);friend bool operator=(const fraction&, const fraction&);friend bool operator=(const fraction&, const fraction&);friend fraction operator +(const fraction&,const fraction&);/重载运算符friend fraction operator -(const fraction&,const fraction&);friend fraction operator *(const fraction&,const fraction&);friend fraction operator /(const fraction&,const fraction&);friend bool operator!=(const fraction&, const fraction&); fraction operator +(const fraction &a,const fraction &b) fraction p; p.numer=a.numer*b.denom+b.numer*a.denom; p.denom=a.denom*b.denom; return p;fraction operator -(const fraction &a,const fraction &b) fraction p; p.numer=a.numer*b.denom-b.numer*a.denom; p.denom=a.denom*b.denom; return p;fraction operator *(const fraction &a,const fraction &b) fraction p; p.numer=a.numer*b.numer; p.denom=a.denom*b.denom; return p;fraction operator /(const fraction &a,const fraction &b) fraction p; p.numer=a.numer*b.denom; p.denom=a.denom*b.numer; return p;ostream& operator(ostream& output,const fraction &num) int a=gcd(num.numer,num.denom);if(num.denom/a)=1)outputnum.numer/a;else if(num.denom/a0) output-num.numer/a/-num.denom/a; else outputnum.numer/a/(istream&input, fraction& num) inputnum.numernum.denom; return input; bool operator=(const fraction&num1, const fraction&num2) return (num1.numer*num2.denom)=(num2.numer*num1.denom); bool operator!=(const fraction &num1, const fraction &num2) return (num1.numer*num2.denom)!=(num2.numer*num1.denom);bool operator(const fraction&a, const fraction&b) return (a.numer*b.denom)(const fraction&a, const fraction&b) return (a.numer*b.denom)(b.numer*a.denom); bool operator=(const fraction&a, const fraction&b) return (a.numer*b.denom)=(const fraction&a, const fraction&b) return (a.numer*b.denom)=(b.numer*a.denom); int main() fraction zrf(1,7),ssh(26,65);fraction p;p.rev(ssh);coutssh=sshn1/ssh=pendl;coutzrf=zrfnssh=sshn ; cout(zrf=ssh)=(zrf=ssh)n(zrfssh)=(zrf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版信息技术第九册第12课《制作框架网页(二)》课件
- 外研版(一起)六下《Unit 1 I cant carry them all》课件1
- 高三物理振动图像和波动图像
- 会计初级计划成本练习题
- 教科版科学六上《原来是相关联的》课件
- 物流仓储中心施工组织设计编制规范
- 危险化学品易燃易爆品基础知识安全培训
- 卫生监督协管巡防台账设计
- 卫生监督协管现场记录手册
- 闲置厂区合成生物园项目可行性研究报告
- 2025广东广州海关缉私局招聘缉私辅助人员52人考试备考试题及答案解析
- 护理专业教学标准(中等职业教育)2025修订
- JG/T 418-2013塑料模板
- (高清版)DGJ 08-98-2014 机动车停车场(库)环境保护设计规程
- 2025年度租房合同及房东房屋安全承诺书
- 外墙粉刷包工合同范例
- 物业工程安全培训
- 机动车辆制动盘加工工艺设计
- 初中地理八年级下册新疆维吾尔自治区 公开课比赛一等奖
- GB/T 16457.2-2023金刚石圆锯片基体第2部分:用于烧结锯片
- GB/T 2652-2022金属材料焊缝破坏性试验熔化焊接头焊缝金属纵向拉伸试验
评论
0/150
提交评论