第八周 项目三 分数类中的运算符重载(1)
来源:互联网 发布:宁夏隆盛软件下载 编辑:程序博客网 时间:2024/06/06 04:48
问题及代码:
/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:Project.cpp*作 者:chenqin.*完成日期:2015年5月20日*版 本 号:v1.0**问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。可以在第4周分数类代码的基础上开始工作。*程序输入:略*程序输出:略*/#include <iostream>#include <cmath>#include <cstdlib>using namespace std;int gcd(int m,int n);class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void simplify(); //化简(使分子分母没有公因子) void display(); CFraction operator+(const CFraction &c); CFraction operator-(const CFraction &c); CFraction operator*(const CFraction &c); CFraction 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); bool operator!=(const CFraction &c);};CFraction::CFraction(int nu,int de)//构造函数,初始化用{ if (de!=0) { nume=nu; deno=de; } else { cerr<<"发生错误,退出程序"; exit(0); }}void CFraction::simplify() //分数化简{ int m,n,r; m=(fabs(deno)); n=(fabs(nume)); while(r=m%n) { m=n; n=r; } deno/=n; nume/=n; if(deno<0) { deno=-deno; nume=-nume; }}void CFraction::display(){ cout<<"("<<nume<<"/"<<deno<<")"<<endl;}//分数的加减乘除运算CFraction CFraction::operator+(const CFraction&c){ CFraction t; t.nume=nume*c.deno+c.nume*deno; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction::operator-(const CFraction&c){ CFraction t; t.nume=nume*c.deno-c.nume*deno; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction::operator*(const CFraction&c){ CFraction t; t.nume=nume*c.nume; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction::operator/(const CFraction&c){ CFraction t; t.nume=nume*c.deno; t.deno=deno*c.nume; t.simplify(); return t;}//六种关系的比较运算bool CFraction::operator>(const CFraction &c){ int this_nume,c_nume,common_deno; this_nume=nume*c.deno; c_nume=c.nume*deno; common_deno=deno*c.deno; if((this_nume-c_nume)*common_deno>0) return true; else return false;}bool CFraction::operator<(const CFraction &c){ int this_nume,c_nume,common_deno; this_nume=nume*c.deno; c_nume=deno*c.nume; common_deno=deno*c.deno; if((this_nume-c_nume)*common_deno<0) return true; else return false;}bool CFraction::operator==(const CFraction &c){ if(*this!=c) return false; else return true;}bool CFraction::operator!=(const CFraction &c){ if(*this>c||*this<c) return true; else return false;}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;}int main(){ CFraction x(1,3),y(4,6),z; cout<<"分数x=1/3,y=4/6"<<endl; z=x+y; cout<<"x+y="; z.display(); z=x-y; cout<<"x-y="; z.display(); z=x*y; cout<<"x*y="; z.display(); z=x/y; cout<<"x/y="; z.display(); x.display(); if(x>y) cout<<"大于"<<endl; if(x<y) cout<<"小于"<<endl; if(x==y) cout<<"等于"<<endl; y.display(); cout<<endl; return 0;}
运行结果:
学习心得:没有什么新的东西,只要记住头脑清新,一句一句的就写下去就对了。在这个问题中,在分数化简那一步我出现了问题,但最后还是解决了,很好。
0 0
- 第八周项目三 分数类中的运算符重载-(1)分数的加减乘除
- 第八周项目三----分数类中的运算符重载
- 第八周 项目三:分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载
- 第八周项目三--分数类中的运算符重载
- 第八周项目三-分数类中的运算符重载
- 第八周(项目三1)——分数类中的运算符重载.
- 第八周 项目三-分数类中的运算符重载(1)
- 第八周 项目三(1):分数类中的运算符重载
- 第八周项目三(1):分数类中的运算符重载
- 第八周 项目三 分数类中的运算符重载(1)
- 15第八周项目三——分数类中的运算符重载(1)
- 第八周 课后实践:项目三——分数类中的运算符重载(1)
- 第八周项目三——分数类中的运算符重载(1)
- 第八周 项目三 (1)分数类中的运算符重载
- 第八周 项目三(1) 分数类中的运算符重载
- 第八周 项目三-分数类中的运算符重载(1)
- 2015年第八周项目三:分数类中的运算符重载(1)
- js实现简单的图片切换
- 微软网站被黑了吗?
- Prime Ring Problem
- How to Calculate IP Header Checksum (With an Example)
- Andorid存储目录知识总结及文件操作方法封装
- 第八周 项目三 分数类中的运算符重载(1)
- python 各种模块学习
- Jquery-zTree的基本用法
- Nginx系列(二.nginx编译参数详解)
- send函数理解
- hadoop版的Hello,World
- grunt学习
- java web系统级初始化工作
- java 判断字符串为空