第九周项目三分数类运算符重载
来源:互联网 发布:Chatforstrangers软件 编辑:程序博客网 时间:2024/05/17 04:07
/* * 程序的版权和版本声明部分: * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:李果 * 完成日期:2013 年 5月 22日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述:* 问题描述: * 程序输出:输出分数的各种形式* 问题分析:略 * 算法设计:略 */ //函数只是写了分数相加相减,多写无意#include <iostream>using namespace std;class CFraction {private: int nume;//ZI int deno;//MU public: friend istream &operator>>(istream &in,CFraction &c); friend ostream &operator<<(ostream &out,CFraction c); CFraction(int nu=0,int de=1):nume(nu),deno(de) {} void simplify(); //void print();CFraction operator+(const CFraction &c); CFraction operator-(const CFraction &c); CFraction operator*(const CFraction &c); CFraction operator/(const CFraction &c); }; istream &operator>>(istream &in,CFraction &c) {char a;while(1){cin>>c.nume>>a>>c.deno;if(a=='/')break;}return cin;}ostream &operator<<(ostream &out,CFraction c){cout<<c.nume<<'/'<<c.deno<<endl;return cout;} int 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::simplify(){int a=gcd(nume,deno);nume=nume/a;deno=deno/a;}CFraction CFraction::operator+(const CFraction &c){ CFraction cc(1,1);cc.nume=nume*c.deno+c.nume*deno; cc.deno=deno*c.deno; cc.simplify(); return cc;}CFraction CFraction::operator-(const CFraction &c){ CFraction cc(1,1);cc.nume=nume*c.deno-c.nume*deno; cc.deno=deno*c.deno; cc.simplify(); return cc;}int main() { CFraction x,y,z; cout<<"请输入分数x:";cin>>x;cout<<"请输入分数y:";cin>>y;cout<<"x:"<<x<<"y:"<<y<<endl; cout<<"x-y="; z=x-y; cout<<z<<endl; z=x+y; cout<<"x+y="; cout<<z<<endl; return 0; }