第八周 项目三(2)分数类中的运算符重载
来源:互联网 发布:淘宝c店保证金是多少 编辑:程序博客网 时间:2024/06/13 12:23
问题及代码:
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:宋健 * 完成日期:2015年 5月 18日 * 版 本 号:v1.0 * * 问题描述:在(1)的基础上,实现分数类中的对象和整型数的四则运算。分数类中的对象可以和整型数进行四则运算,且运算符合交换律。例如:CFraction a(1,3),b; int i=2; 可以完成b=a+i;。同样,可以完成i+a, 45+a, a*27, 5/a等各种运算。 * 程序输入: * 程序输出: */#include<iostream>#include<Cmath>#include<cstdlib>#include <iomanip>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: int gcd(int ,int); CFraction(int nu=0,int de=1); //构造函数,初始化用 void simplify();//化简(使分子分母没有公因子) CFraction operator+(const CFraction &c); CFraction operator-(const CFraction &c); CFraction operator*(const CFraction &c); CFraction operator/(const CFraction &c); friend CFraction operator+( CFraction &c,int a); friend CFraction operator+(int a, CFraction &c); friend CFraction operator-( CFraction &c,int a); friend CFraction operator-(int a, CFraction &c); friend CFraction operator*( CFraction &c,int a); friend CFraction operator*(int a, CFraction &c); friend CFraction operator/( CFraction &c,int a); friend CFraction operator/(int a, 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(int nu,int de){ if(de!=0) { nume=nu; deno=de; } else cout<<"分母不能为0!";}void CFraction::simplify(){ int m,n,r; m=fabs(deno); n=fabs(nume); while(r=m%n) // 求m,n的最大公约数 { m=n; n=r; } deno/=n; // 化简 nume/=n; if (deno<0) // 将分母转化为正数 { deno=-deno; nume=-nume; }}CFraction operator+( CFraction &c,int a){CFraction c1(c.nume+a*c.deno,c.deno); c1.simplify(); return c1;}CFraction operator+(int a, CFraction &c){ CFraction b(a,1),z; z=c+b; return z;}CFraction operator-( CFraction &c,int a){ CFraction b(a,1); return c-b;}CFraction operator-(int a, CFraction &c){ CFraction b(a,1); return b-c;}CFraction operator*( CFraction &c,int a){ CFraction b(a,1); return c*b;}CFraction operator*(int a, CFraction &c){ CFraction b(a,1); return c*b;}CFraction operator/( CFraction &c,int a){ CFraction b(a,1); return c/b;}CFraction operator/(int a, CFraction &c){ CFraction b(a,1); return b/c;}CFraction CFraction::CFraction::operator+(const CFraction &c){ CFraction x(nume*c.deno+deno*c.nume,deno*c.deno); x.simplify(); return x;}CFraction CFraction::operator-(const CFraction &c){ CFraction x(nume*c.deno-deno*c.nume,deno*c.deno); x.simplify(); return x;}CFraction CFraction::operator*(const CFraction &c){ CFraction x(nume*c.nume,deno*c.deno); x.simplify(); return x;}CFraction CFraction::operator/(const CFraction &c){ CFraction x(nume*c.deno,deno*c.nume); x.simplify(); return x;}bool CFraction::operator>(const CFraction &c){ if(nume*c.deno>deno*c.nume) return true; else return false;}bool CFraction::operator<(const CFraction &c){ if(nume*c.deno<deno*c.nume) return true; else return false;}bool CFraction::operator==(const CFraction &c){ if(*this>c||*this<c) return false; else return true;}bool CFraction::operator!=(const CFraction &c){ if (*this==c) return false; else return true;}bool CFraction::operator>=(const CFraction &c){ if(*this<c) return false; else return true;}bool CFraction::operator<=(const CFraction &c){ if(*this>c) return false; else return true;}void CFraction::display(){ cout<<"("<<nume<<"/"<<deno<<")"<<endl;}int main(){ CFraction x(1,3),y(-5,10),s; cout<<"分数x=1/3 y=-5/10"<<endl; s=x+y; cout<<"+x+y="; s.display(); s=x-y; cout<<"x-y="; s.display(); s=x*y; cout<<"x*y="; s.display(); s=x/y; cout<<"x/y="; s.display(); s=x+y; cout<<"-x+y="; s.display(); x.display(); if (x>y) cout<<"大于"<<endl; if (x<y) cout<<"小于"<<endl; if (x==y) cout<<"等于"<<endl; y.display(); cout<<endl; CFraction c1(5,3),c2; c2=c1+5; c2.display(); c2=5+c1; c2.display(); c2=c1-5; c2.display(); c2=5-c1; c2.display(); c2=c1*5; c2.display(); c2=5*c1; c2.display(); c2=c1/5; c2.display(); c2=5/c1; c2.display(); return 0;}
运行结果:
知识点总结:
在分数与整数混合运算过程中,不知道为什么在形参或实参之前加const会报错,不得已将const删除,还望老师解答
0 0
- 第八周项目三 分数类中的运算符重载-(2)分数与分数、分数与整数的四则运算
- 第八周项目三----分数类中的运算符重载
- 第八周 项目三:分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载
- 第八周项目三--分数类中的运算符重载
- 第八周项目三-分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载-(1)分数的加减乘除
- 第八周(项目三2)——分数类中的运算符重载。
- 第八周 项目三-分数类中的运算符重载(2)
- 第八周 项目三(2):分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载 (2)
- 第八周项目三(2):分数类中的运算符重载:升级版
- 15第八周项目三——分数类中的运算符重载(2)
- 第八周项目三--分数类中的运算符重载(2)
- 第八周项目三——分数类中的运算符重载(2)
- 第八周 项目三(2)分数类中的运算符重载
- 2015年第八周项目三:分数类中的运算符重载(2)
- 第八周项目三——分数类中的运算符重载(2)
- Unity3D中Quaternion类SetLookRotation方法和LookRotation方法使用解析
- 生活已不易!且行且珍惜!
- stanford open-source CFD code SU2-3.2.9 源码编译安装
- Robot Framework Get Library Instance
- Java版 求杨辉三角
- 第八周 项目三(2)分数类中的运算符重载
- Python:[转]浅学BeautifulSoup分析html
- poj 2084
- Leetcode 3Sum Closest
- Qt Browser
- 计数排序
- 栈和队列(5.18)
- 多线程:常见题目
- 开机时间太长