第八周项目三:分数重载
来源:互联网 发布:网络销售如何提高业绩 编辑:程序博客网 时间:2024/05/16 12:48
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2012, 烟台大学计算机学院学生* All rights reserved.* 文件名称:实现分数类中的运算符重载, 在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算* 作 者:李巧丽* 完成日期:2013 年 04 月 24 日* 版 本 号: V1.0* 对任务及求解方法的描述部分* 输入描述:* 问题描述:* 程序输出: * 程序头部的注释结束*/#include <iostream>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1):nume(nu),deno(de){} void simplify(); void display();int gcd(int x,int y); CFraction operator+(const CFraction &c); //两个分数相加,结果要化简 CFraction operator-(const CFraction &c); //两个分数相减,结果要化简 CFraction operator*(const CFraction &c); //两个分数相乘,结果要化简 CFraction operator/(const CFraction &c); //两个分数相除,结果要化简 CFraction operator+(); //取正一目运算 CFraction operator-(); //取反一目运算 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);};//取最大公约数int CFraction::gcd(int x,int y){int r;while(y!=0){r=x%y;x=y;y=r;}return x;}//化简(使分子分母没有公因子)void CFraction::simplify(){int n=gcd(nume,deno);nume=nume/n;deno=deno/n;}//输出:以8/6为例,style为0时,输出8/6;void CFraction::display(){ cout<<"("<<nume<<'/'<<deno<<")"<<endl;}CFraction CFraction::operator+(const CFraction &c) //两个分数相加,结果要化简{CFraction c1;c1.nume=nume*c.deno+c.nume*deno;c1.deno=deno*c.deno;c1.simplify();return c1;}CFraction CFraction::operator-(const CFraction &c) //两个分数相减,结果要化简{CFraction c1;c1.nume=nume*c.deno-c.nume*deno;c1.deno=deno*c.deno;c1. simplify();return c1;}CFraction CFraction::operator*(const CFraction &c) //两个分数相乘,结果要化简{CFraction c1;c1.nume=nume*c.nume;c1.deno=deno*c.deno;c1. simplify();return c1;}CFraction CFraction::operator/(const CFraction &c) //两个分数相除,结果要化简{CFraction c1;c1.nume=c.deno*nume;c1.deno=c.nume*deno;c1. simplify();return c1;}CFraction CFraction::operator+() //取正一目运算{ return *this;}CFraction CFraction::operator-() //取反一目运算{CFraction c1;c1.nume=-nume;c1.deno=deno;return c1;}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||this_nume<c_nume&&common_deno<0)return true;elsereturn false;}}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||this_nume<c_nume&&common_deno<0)return false;elsereturn true;}}bool CFraction::operator==(const CFraction &c){if(*this!=c)return false;elsereturn true;}bool CFraction::operator!=(const CFraction &c){if(*this!=c)return true;elsereturn false;}bool CFraction::operator>=(const CFraction &c){if(*this<c)return true;elsereturn false;}bool CFraction::operator<=(const CFraction &c){if(*this>c)return true;elsereturn false;}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; cout<<"-x="; s.display(); x.display(); if (x>y) cout<<"大于"<<endl; if (x<y) cout<<"小于"<<endl; if (x==y) cout<<"等于"<<endl; y.display(); cout<<endl; return 0;}
运行结果:
- 第八周项目三:分数重载
- 第八周项目三----分数类中的运算符重载
- 第八周 项目三:分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载
- 第八周项目三--分数类中的运算符重载
- 第八周项目三-分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载-(2)分数与分数、分数与整数的四则运算
- 第八周项目三 分数类中的运算符重载-(1)分数的加减乘除
- 第八周项目三——分数类中的运算符重载
- 2014第八周项目三--分数类的运算符重载
- 第八周(项目三1)——分数类中的运算符重载.
- 第八周(项目三2)——分数类中的运算符重载。
- 第八周 项目三-分数类中的运算符重载(1)
- 第八周 项目三-分数类中的运算符重载(2)
- 第八周 项目三(1):分数类中的运算符重载
- 第八周 项目三(2):分数类中的运算符重载
- 第八周——运算符重载——项目三(一)分数类
- 第八周项目三(1):分数类中的运算符重载
- QT去掉窗体标题栏
- 多重背包-hdu2191,完全背包-hdu4508,二维费用背包hdu2159
- 第八周
- 64位Windows系统如何配置32位ODBC数据源
- 编译64位boost
- 第八周项目三:分数重载
- Android的国际化
- DLL中界面风格设置
- 出现java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
- ft5x06 ctpm调试
- 第八周任务
- 监视器,定点发生
- 合并两个List集合。有相同的元素只存在一次
- 德州爆炸案被网络犯罪分子借题发挥