



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 清炒法与炒炭法精要
- 离婚协议书翻译及海外法律文件认证合同
- 商业综合体物业租赁及配套设施服务合同
- 网络直播平台合同中多元化收入模式下的价格确定
- 农户耕地杂地租赁及农产品加工销售合同
- 数学光盘配套课件
- 汉字互动游戏课件
- 脑梗死教学课件
- 六职技术测试题及答案
- 建设银行2025丹东市秋招笔试热点题型专练及答案
- 浙江名校协作体(G12)2025年9月2026届高三返校联考英语(含答案)
- WB/T 1066-2017货架安装及验收技术条件
- GB/T 37963-2019电子设备可靠性预计模型及数据手册
- 《土地管理学》第一章课件
- 旧楼加装电梯安装合同范本
- 道路工程安全技术交底记录大全
- 小说写作的基础知识短篇小说的写作
- 特种作业人员管理档案参考模板范本
- 新媒体营销实务(慕课版)教学ppt课件(完整版)
- 水机施工技术交底
- 骨科手术分级目录
评论
0/150
提交评论