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

/*
*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="https://img-blog.csdn.net/20160531082650348?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />





阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQxiaolifei/article/details/51542807
文章标签: C++
上一篇飛飛(四十九)用友元函数来编写运算符重载
下一篇飛飛(五十一)重载函数的应用
想对作者说点什么? 我来说一句

U2飛控說明

2014年05月20日 609KB 下载

飛鴿傳書2.5

2007年10月31日 3.57MB 下载

易飛ERP項目實施方案

2010年03月31日 71KB 下载

FMS電腦飛行模擬軟體

2010年06月25日 6.25MB 下载

南京大学计算物理课件李文飞

2018年07月07日 37.9MB 下载

飛龍图标提取器(精简版).

2013年04月19日 1.41MB 下载

没有更多推荐了,返回首页

关闭
关闭