飛飛(五十)输入输出运算符重载(cerr的用法)

来源:互联网 发布:纹理合成算法 编辑:程序博客网 时间:2024/06/04 19:19
/**Copyright (c) 2016,烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作    者:李飞*完成日期:2016年 5月 31日*版 本 号:1.0**问题描述:输入输出运算符重载(cerr的用法)*输入描述:*程序输出:*/#include <iostream>#include<Cmath>using namespace std;class CFraction{private:      int nume;      int deno;public:      CFraction(int nu=0,int de=1):nume(nu),deno(de){}      void simplify();      friend istream &operator >>(istream &in,CFraction &x);      friend ostream &operator <<(ostream &out,CFraction x);      CFraction operator +(const CFraction &c);      CFraction operator -(const CFraction &c);};void CFraction::simplify(){      int n,m,r;      n=fabs(deno);      m=fabs(nume);      while(r=m%n)      {            m=n;            n=r;      }      deno/=n;      nume/=n;      if(deno<0)      {            deno=-deno;            nume=-nume;      }}istream &operator>>(istream &in,CFraction &x){      char ch;      while(1)      {      cin>>x.nume>>ch>>x.deno;      if(x.deno==0)            cerr<<"分母为零,请重新输入!";      else if(ch!='/')            cerr<<"格式错误,请重新输入!";      else            break;      }      return cin;}ostream &operator<<(ostream &out ,CFraction x){      if(x.deno==x.nume)      {            cout<<1<<endl;      }      else if(x.nume==0){cout<<0;}     else cout <<x.nume<<'/'<<x.deno;      return cout;}CFraction CFraction::operator+(const CFraction &c){      CFraction t;      t.nume=nume*c.deno+c.nume*deno;      t.deno=deno*c.deno;      t.simplify();      return t;}CFraction CFraction::operator-(const CFraction &c){      CFraction t;      t.nume=nume*c.deno-c.nume*deno;      t.deno=deno*c.deno;      t.simplify();      return t;}int main(){    CFraction x,y,s;    cout<<"请输入x: ";    cin>>x;    cout <<"请输入y: ";    cin>>y;    s=x+y;    cout<<s<<endl;    s=x-y;    cout<<s<<endl;    return 0;}<img src="http://img.blog.csdn.net/20160531082650348?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

0 0
原创粉丝点击