C++程序设计实践指导1.6分数运算改写要求实现

改写要求:重载>>和<<实现分数类对象的直接输入输出,重载+完成多个分数对象加法

#include <cstdlib>
#include <iostream>

using namespace std;
class Fract
{
    
      int num,den;
      public:           
             friend ostream& operator << (ostream& output,Fract& temp);
             friend istream& operator >> (istream& intput,Fract& temp1);
             Fract operator + (Fract& temp1);
             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;
             }
           
};

istream& operator >>(istream& input,Fract& temp1)
{
         input>>temp1.num>>temp1.den;
         return input;
}

ostream& operator <<(ostream& output,Fract& temp)
{
         output<<temp.num<<"/"<<temp.den<<endl;
         return output;
}

Fract Fract::operator + (Fract& temp1)
{
         Fract sum;
         int x,y,temp;
         x=num*temp1.den+den*temp1.num;
         y=den*temp1.den;
         temp=gcd(x,y);
         x=x/temp;
         y=y/temp;
         sum.num=x;
         sum.den=y;
         return sum;
}
             
int main(int argc, char *argv[])
{
    Fract temp1,temp2,temp;
    cin>>temp1>>temp2;
    temp=temp1+temp2;
    cout<<temp;
    system("PAUSE");
    return EXIT_SUCCESS;
}
原文地址:https://www.cnblogs.com/c5395348/p/4272013.html