第九周项目3-分数类中的运算符重载(续)
来源:互联网 发布:手机淘宝申请免费注册 编辑:程序博客网 时间:2024/06/05 06:25
问题及代码:/* *Copyright (c) 2015,烟台大学计算机学院*All rights reserved.*文件名称:test.cop*作者:*完成日期:2015年5月17日*版本号:v1.0**问题描述: *输入描述:*输出描述:
#include <iostream>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: //构造函数及运算符重载的函数声明 CFraction(int n=0,int d=1){nume=n;deno=d;} friend ostream &operator<<(ostream &out,CFraction c); friend istream &operator>>(istream &in,CFraction &c); CFraction operator+(); CFraction operator-(); CFraction operator~(); void display(); void simply(); CFraction operator+(const CFraction &t); CFraction operator-(const CFraction &t); CFraction operator*(const CFraction &t); CFraction operator /(const CFraction &t); bool operator>(const CFraction &t); bool operator<(const CFraction &t); bool operator>=(const CFraction &t); bool operator<=(const CFraction &t); bool operator==(const CFraction &t); bool operator!=(const CFraction &t);};//重载函数的实现及用于测试的main()函数void CFraction::display(){ cout<<nume<<"/"<<deno<<endl;}void CFraction::simply(){ int a,b,c; if(nume>deno){a=nume;b=deno;} else {a=deno;b=nume;} while(a%b) { c=a%b; a=b; b=c; } nume=nume/b; deno=deno/b;}ostream &operator<<(ostream&out,CFraction c){ out<<c.nume<<"/"<<c.deno<<endl; return out;}istream &operator>>(istream&in,CFraction &c){ char a; while(1) { in>>c.nume>>a>>c.deno; if(c.deno!=0&&a=='/')break; else cout<<"输入格式错误,请从新输入:"<<endl; }}CFraction CFraction::operator-(){ nume=-nume; return *this;}CFraction CFraction::operator+(){ return *this;}CFraction CFraction::operator~(){ int a; a=nume; nume=deno; deno=a; return *this;}CFraction CFraction::operator+(const CFraction &t){ CFraction c1; c1.deno=deno*t.deno; c1.nume=nume*t.deno+t.nume*deno; c1.simply(); return c1;}CFraction CFraction::operator-(const CFraction &t){CFraction c1; c1.deno=deno*t.deno; c1.nume=nume*t.deno-t.nume*deno; c1.simply(); return c1;}CFraction CFraction::operator*(const CFraction &t){ CFraction c1; c1.deno=deno*t.deno; c1.nume=nume*t.nume; return c1;}CFraction CFraction::operator/(const CFraction &t){ CFraction c1; c1.deno=deno*t.nume; c1.nume=nume*t.deno; return c1;}bool CFraction::operator>(const CFraction &t){ if(nume*t.deno>t.nume*deno) return true; else return false;}bool CFraction::operator<(const CFraction &t){ if(nume*t.deno>t.nume*deno) return false; else return true;}bool CFraction::operator<=(const CFraction &t){ if(*this<t==true) return false; else return true;}bool CFraction::operator>=(const CFraction &t){ if(*this>t==true) return false; else return true;}bool CFraction::operator==(const CFraction &t){ if((*this>t==false)&&(*this<t==false)) return true; else return false;}bool CFraction::operator!=(const CFraction &t){ if((*this==t)==false) return true; else return false;}int main(){ CFraction x,y,s; cout<<"输入x: "; cin>>x; cout<<"输入y: "; cin>>y; s=+x+y; cout<<"+x+y="<<s<<endl; s=x-y; cout<<"x-y="<<s<<endl; s=x*y; cout<<"x*y="<<s<<endl; s=x/y; cout<<"x/y="<<s<<endl; cout<<"-x="<<-x<<endl; cout<<"+x="<<+x<<endl; cout<<"x的倒数: "<<~x<<endl; cout<<x; if (x>y) cout<<"大于"; if (x<y) cout<<"小于"; if (x==y) cout<<"等于"; cout<<y<<endl; return 0;}
运行结果:
0 0
- 第九周--项目3-分数类中的运算符重载
- 第九周项目3(1)-分数类中的运算符重载(续)
- 第九周项目3(2)-分数类中的运算符重载(续)
- 第九周上机实践项目3——分数类中的运算符重载(续)
- 第九周项目3——分数类中的运算符重载(续)
- 第九周 项目3 分数类中的运算符重载(续)
- 第九周 【项目3-分数类中的运算符重载(续)】
- 第九周【项目3-分数类中的运算符重载(续)】
- 第九周 项目3-分数类中的运算符重载(续)
- 第九周项目3——分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- 第九周项目3--分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- 第九周上机项目3 分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- 第九周项目3:分数类中的运算符重载(续)
- 第九周项目3-分数类中的运算符重载(续)
- 第九周上机实践项目3-分数类中的运算符重载(续 重载输入输出流)
- 简单的Makefile文件批处理
- 调侃《Head First设计模式》之迭代器和组合模式(一)
- Linux 基础学习笔记
- IoC(Inversion of Control)内涵解析
- 动态规划(合并类)--石子合并
- 第九周项目3-分数类中的运算符重载(续)
- C++实现仿vector的动态数组
- 系统学习Linux 建议
- Java (引用数据类型)排序
- android View System touch 事件分发流程
- android中延迟执行某个任务
- 第九周项目4-我的向量类
- LCS(最大公共序列) scala版本
- scala函数定义与使用