第九周上机任务3
2012-04-16 20:06
344 查看
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:renwu.cpp * 作 者:宋本一 * 完成日期:2012 年 4 月 16 日 * 版 本 号:9.3 * 对任务及求解方法的描述部分 * 输入描述:略 * 问题描述:略 * 程序输出:略 * 程序头部的注释结束 */ #include <iostream> using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 int gcd(int m, int n); public: //构造函数及运算符重载的函数声明 CFraction(int n=1, int d=1){if(d==0) return;nume=n,deno=d;} friend CFraction operator +(CFraction &c1,CFraction &c2); friend CFraction operator -(CFraction &c1,CFraction &c2); friend CFraction operator *(CFraction &c1,CFraction &c2); friend CFraction operator /(CFraction &c1,CFraction &c2); friend CFraction operator -(CFraction &c); bool operator >(CFraction &c); bool operator <(CFraction &c); bool operator >=(CFraction &c); bool operator <=(CFraction &c); bool operator ==(CFraction &c); bool operator !=(CFraction &c); friend ostream& operator << (ostream&,CFraction &); friend istream& operator >> (istream&,CFraction &); void simplify(); void display(); }; istream& operator >> (istream& input,CFraction & c) { input>>c.nume>>c.deno; return input; } ostream& operator << (ostream& output,CFraction & c) { output<<c.nume<<'/'<<c.deno<<endl; return output; } void CFraction::simplify() { int n=gcd(deno,nume); deno/=n; nume/=n; } int CFraction::gcd(int m,int n) { int r; if(m<n) { r=m; m=n; n=r; } while(r=m%n) { m=n; n=r; } return n; } void CFraction::display() { cout<<nume<<"/"<<deno<<endl; } CFraction operator +(CFraction &c1,CFraction &c2) { CFraction c; c.deno=c1.deno*c2.deno; c.nume=c1.nume*c2.deno+c2.nume*c1.deno; c.simplify(); return c; } CFraction operator -(CFraction &c1,CFraction &c2) { CFraction c; c.deno=c1.deno*c2.deno; c.nume=c1.nume*c2.deno-c2.nume*c1.deno; c.simplify(); return c; } CFraction operator *(CFraction &c1,CFraction &c2) { CFraction c; c.deno=c1.deno*c2.deno; c.nume=c1.nume*c2.nume; c.simplify(); return c; } CFraction operator /(CFraction &c1,CFraction &c2) { CFraction c; c.deno=c1.deno*c2.nume; c.nume=c1.nume*c2.deno; c.simplify(); return c; } CFraction operator -(CFraction &c) { return CFraction(-c.nume,c.deno); } bool CFraction::operator >(CFraction &c) { CFraction cf(*this/c); if(cf.nume/cf.deno>1) return true; else return false; } bool CFraction::operator <(CFraction &c) { CFraction cf(*this/c); if(cf.nume/cf.deno<1) return true; else return false; } bool CFraction::operator >=(CFraction &c) { CFraction cf(*this/c); if(cf.nume/cf.deno>=1) return true; else return false; } bool CFraction::operator <=(CFraction &c) { CFraction cf(*this/c); if(cf.nume/cf.deno<=1) return true; else return false; } bool CFraction::operator ==(CFraction &c) { CFraction cf(*this/c); if(cf.nume/cf.deno==1) return true; else return false; } bool CFraction::operator !=(CFraction &c) { CFraction cf(*this/c); if(cf.nume/cf.deno!=1) return true; else return false; } //重载函数的实现及用于测试的main()函数 int main() { CFraction c1(1,3),c2(3,6),c3(6,10); cout<<"c1="; c1.display(); cout<<"c2="; c2.display(); cout<<"c3="; c3.display(); if(c1>c2) cout<<"c1>c2"<<endl; if(c2<c1) cout<<"c2<c1"<<endl; if(c2>=c3) cout<<"c2>=c3"<<endl; if(c2<=c3) cout<<"c2<=c3"<<endl; if(c2==c3) cout<<"c2==c3"<<endl; if(c1!=c2) cout<<"c1!=c2"<<endl; cout<<"c1+c2="; (c1+c2).display(); cout<<"c1-c2="; (c1-c2).display(); cout<<"c1*c2="; (c1*c2).display(); cout<<"c1/c2="; (c1/c2).display(); cout<<"c3=-c3="; c3=-c3; c3.display(); system("pause"); return 0; }
运行结果:
相关文章推荐
- 第九周上机任务项目4-一元一次方程类
- 第九周上机任务--分段函数求值
- 第九周上机任务4
- 第九周上机任务5
- 二次函数求解(第九周上机任务)
- 第九周上机任务(个人所得税)
- C#上机 第九周 任务2 从题库中随机抽题
- 求分段函数的各种解(第九周上机任务)
- 第九周上机任务项目3:利息计算器
- 第九周上机任务1
- 第九周上机任务(用if-else语句求解分段函数)
- 日历表(第九周上机任务)。(不用掰手指头算了吧)
- C#上机 第九周 任务四 计算数列的极限值
- 第九周上机任务2
- 第九周上机任务(二)
- 第九周上机任务
- 第九周上机任务项目1:分段函数求值
- 第九周上机项目六(2)委派任务
- 第九周上机任务项目2:个人所得税计算器
- 利息计算器(第九周上机任务3)。