第九周项目三分数类运算符重载

来源:互联网 发布: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;  }  

原创粉丝点击