15第八周项目三——分数类中的运算符重载(1)
2015-04-29 09:03
537 查看
/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:李晓凯
* 完成日期:2015年 4 月 29 日
* 版 本 号:v1.0
*
* 问题描述:实现分数中的运算符重载,在分数类中可以完成和分数的加减乘除(运算后化简),比较(6中关系)的运算,。
* 输入描述:
* 程序输出:运算结果
*/
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:李晓凯
* 完成日期:2015年 4 月 29 日
* 版 本 号:v1.0
*
* 问题描述:实现分数中的运算符重载,在分数类中可以完成和分数的加减乘除(运算后化简),比较(6中关系)的运算,。
* 输入描述:
* 程序输出:运算结果
*/
#include <iostream> #include <Cmath> using namespace std; int gcd(int a,int b); class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int n=0,int d=1):nume(n),deno(d) {} 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); }; void CFraction::simplify() { int n; n=gcd(nume,deno); deno/=n; nume/=n; if (deno<0) { deno=-deno; nume=-nume; } } int gcd(int a,int b) { int m; while(b!=0) { m=a%b; a=b; b=m; } return a; } void CFraction::display() { cout<<"("<<nume<<"/"<<deno<<")"; } CFraction CFraction::operator + (const CFraction &c) { CFraction d; d.nume=nume*c.deno+c.nume*deno; d.deno=deno*c.deno; d.simplify(); return d; } CFraction CFraction:: operator - (const CFraction &c) { CFraction d; d.nume=nume*c.deno-c.nume*deno; d.deno=deno*c.deno; d.simplify(); return d; } CFraction CFraction:: operator * (const CFraction &c) { CFraction d; d.nume=nume*c.nume; d.deno=deno*c.deno; d.simplify(); return d; } CFraction CFraction:: operator / (const CFraction &c) { CFraction d; if (c.nume==0) return *this; d.nume=nume*c.deno; d.deno=deno*c.nume; d.simplify(); return d; } bool CFraction::operator > (const CFraction &c) { int c1_nume,c2_nume,common_deno; c1_nume=nume*c.deno; c2_nume=c.nume*deno; common_deno=deno*c.deno; if ((c1_nume-c2_nume)*common_deno>0) return true; return false; } bool CFraction::operator<(const CFraction &c) { int c1_nume,c2_nume,common_deno; c1_nume=nume*c.deno; c2_nume=c.nume*deno; common_deno=deno*c.deno; if ((c1_nume-c2_nume)*common_deno<0) return true; return false; } bool CFraction::operator==(const CFraction &c) { if (*this!=c) return false; return true; } bool CFraction::operator!=(const CFraction &c) { if (*this>c || *this<c) return true; return false; } bool CFraction::operator>=(const CFraction &c) { if (*this<c) return false; return true; } bool CFraction::operator<=(const CFraction &c) { if (*this>c) return false; return true; } int main() { CFraction c1(1,3),c2(-5,10),s; cout<<"分数:"<<endl<<"c1="; c1.display(); cout<<endl; cout<<"c2="; c2.display(); cout<<endl<<endl; s=c1+c2; cout<<"c1+c2="; s.display(); cout<<endl; s=c1-c2; cout<<"c1-c2="; s.display(); cout<<endl; s=c1*c2; cout<<"c1*c2="; s.display(); cout<<endl; s=c1/c2; cout<<"c1/c2="; s.display(); cout<<endl<<endl; c1.display(); if (c1>c2) cout<<"大于"; if (c1<c2) cout<<"小于"; if (c1==c2) cout<<"等于"; c2.display(); cout<<endl; return 0; }
相关文章推荐
- 15第八周项目三——分数类中的运算符重载(2)
- 第八周项目三 分数类中的运算符重载
- 15第八周项目一——实现复数类中的运算符重载(友元函数)
- 2013第八周上机任务【项目3-分数类中的运算符重载】
- 2015年第八周项目三:分数类中的运算符重载(2)
- 第八周——运算符重载——项目三(一)分数类
- 第八周 【项目3-分数类中的运算符重载】(2)
- 第八周上机实践项目——分数类中的运算符重载
- 第八周项目三--分数类中的运算符重载
- 第八周项目3-2:分数类中的运算符重载(涉及分数和整数的运算)
- 第八周项目3--分数类运算符重载
- 第八周 项目3-分数类中的运算符重载(1)加减乘除和6种比较关系
- 第八周项目3-分数类中的运算符重载
- 第八周项目三-分数类中的运算符重载
- 第二学期第八周项目3--分数类中的运算符重载(1)
- 第八周项目三分数类中的运算符重载(1)
- 第二学期第八周项目3--分数类中的运算符重载(2)
- 第八周(项目三1)——分数类中的运算符重载.
- 第八周项目三——分数类中的运算符重载(2)
- 第八周 项目三(1):分数类中的运算符重载