第九周-项目3-分数类的运算符重载
来源:互联网 发布:双网卡路由器共享网络 编辑:程序博客网 时间:2024/05/18 02:50
/** 程序的版权和版本声明部分:* Copyright (c) 2013.烟台大学计算机学院。* All rights reserved.* 文件名称:分数类中的运算符重载* 作 者:冯冬影* 完成日期:2014 年 4月 22日* 版 本 号:v1.0* 对任务及求解方法的描述部分:* 输入描述:* 问题描述:* 程序输出:*/#include <iostream>#include<Cmath>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void set(int nu=0,int de=1); //置值,改变值时用 CFraction operator+(CFraction &c); CFraction operator-(CFraction &c); CFraction operator*(CFraction &c); CFraction operator/(CFraction &c); friend CFraction operator+(CFraction &c);//取正 friend CFraction operator-(CFraction &c);//取反 friend CFraction operator~(CFraction &c);//求倒数 friend ostream&operator<<(ostream&,CFraction &); friend istream&operator>>(istream&,CFraction &);};ostream&operator<<(ostream &output,CFraction &c){ CFraction c1; int t,r,a,b; a=c.nume; b=c.deno; if(a<b) { t=a; a=b; b=t; } while (b!=0) { r=a%b; a=b; b=r; } c1.nume=c.nume/a; c1.deno=c.deno/a; if(c.deno==1) output<<c1.nume<<endl; else output<<c1.nume<<"/"<<c1.deno<<endl; return output;}istream&operator>>(istream &input,CFraction &c){ int nu,de; char k; input>>nu>>k>>de; c.nume=nu; c.deno=de; return input;}CFraction operator+(CFraction &c){ CFraction c1; if(c.deno<0) c1.deno=-c.deno; else c1.deno=c.deno; if(c.nume<0) c1.nume=-c.nume; else c1.nume=c.nume; return c1;}CFraction operator-(CFraction &c){ CFraction c1; if(c.nume*c.deno>0) { c1.nume=-c.nume; c1.deno=c.deno; } else { c1.deno=c.deno; c1.nume=c.nume; } return c1;}CFraction operator~(CFraction &c){ CFraction c1; c1.nume=c.deno; c1.deno=c.nume; return c1;}void CFraction::set(int nu,int de){ if(de!=0) { nume=nu; deno=de; }}CFraction::CFraction(int nu,int de){ if(de!=0) { nume=nu; deno=de; } else cout<<"初始化错误,请重新初始化!";}CFraction CFraction::operator+(CFraction &c){ int n,d; n=nume*c.deno+deno*c.nume; d=deno*c.deno; CFraction c3(n,d); return c3;}CFraction CFraction::operator-(CFraction &c){ int n,d; n=nume*c.deno-deno*c.nume; d=deno*c.deno; CFraction c3(n,d); return c3;}CFraction CFraction::operator*(CFraction &c){ int n,d; n=nume*c.nume; d=deno*c.deno; CFraction c3(n,d); return c3;}CFraction CFraction::operator/(CFraction &c){ int n,d; n=nume*c.deno; d=deno*c.nume; CFraction c3(n,d); return c3;}int main(){ CFraction c1,c2,c; cout<<"请输入第一个分数(按照n/m的格式):"; cin>>c1; cout<<"请输入第二个分数(按照n/m的格式):"; cin>>c2; c=c1+c2; cout<<"c1+c2="; cout<<c; c=c1-c2; cout<<"c1-c2="; cout<<c; c=c1*c2; cout<<"c1*c2="; cout<<c; c=c1/c2; cout<<"c1/c2="; cout<<c; CFraction C(5,-8); cout<<"C="; cout<<C; cout<<"C取正:"; c=(+C); cout<<c; cout<<"C取反:"; c=(-C); cout<<c; cout<<"C取倒数:"; c=(~C); cout<<c; return 0;}
运行结果
0 0
- 第九周项目3-分数类的运算符重载
- 第九周-项目3-分数类的运算符重载
- 第九周--项目3-分数类中的运算符重载
- 15第九周项目三——分数类中的运算符的重载(续)
- 第九周 项目3 实现分数类中的运算符重载
- 第九周项目3(1)-分数类中的运算符重载(续)
- 第九周项目3(2)-分数类中的运算符重载(续)
- 第九周上机实践项目3——分数类中的运算符重载(续)
- 第九周项目3——分数类中的运算符重载(续)
- 第九周 项目3 分数类中的运算符重载(续)
- 第九周 【项目3-分数类中的运算符重载(续)】
- 第九周【项目3-分数类中的运算符重载(续)】
- 第九周 项目3-分数类中的运算符重载(续)
- 第九周 项目3-分数类中的运算符重载(1)
- 第九周 项目3-分数类中的运算符重载(2)
- 第九周项目3——分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- 第九周项目3--分数类中的运算符重载(续)
- Error:running builder "Deployment Builder" on project ...
- 最短路径相关
- JavaScript中Array(数组)的属性和方法
- SQL SERVER 备份恢复误区之‘在破坏日志备份链之后,需要一个完整备份来重新开始日志链’
- 设计模式感触之代理模式应用
- 第九周-项目3-分数类的运算符重载
- 第九周项目2
- Android手机嵌入式驱动开发课程教程
- Python: 设计模式 之 工厂模式例(1)
- ajax 异步封装-函数 javascript原生
- 基于TCP文件传输(Java)
- Nyoj 寻找最大数 448
- 指针数组&数组指针
- 集合的常用用法