//21、定义一个分数类使得分数对象可以整体输入输出;实现分数类中的运算符重载(分子和分母均为整型)

//21、定义一个分数类,并为其重载>>和<<运算符,使得分数对象可以整体输入输出;实现分数类中的运算符重载(分子和分母均为整型)
//,即分数的加、减、乘、除的运算(运算后要求化简)
#include"iostream"
using namespace std;
#include"math.h"
class fen
{

private:
    int x,y;
public:
    fen(int a=0,int b=0):x(a),y(b){}
   friend istream &operator>>(istream &in,fen &f);
   friend ostream &operator<<(ostream &out,fen &f);
   fen operator+(fen f);
   fen operator-(fen f);
   fen operator*(fen f);
   fen operator/(fen f);
   int go(fen f);

};
int main()
{

    fen f1,f2,f3;
    cin>>f1>>f2;
    f3=f1+f2;
    cout<<f3;
    f3=f1-f2;
    cout<<f3;
    f3=f1*f2;
    cout<<f3;
    f3=f1/f2;
    cout<<f3;
    return 0;

}
istream &operator>>(istream &in,fen &f)
{
    in>>f.x;
    in>>f.y;
    return in;
}
ostream &operator<<(ostream &out,fen &f)
{

    out<<f.x<<"/"<<f.y<<endl;
}
 fen fen::operator+(fen f)
 {
     fen f4;
     int num=0,i=0;
     f4.x=x*f.y+y*f.x;
     f4.y=y*f.y;
     num=go(f4);
     f4.x=f4.x/num;
     f4.y=f4.y/num;
     return f4;

 }
 fen fen::operator-(fen f)
 {
     fen f4;
     int num=0,i=0;
     f4.x=x*f.y-y*f.x;
     f4.y=y*f.y;
     num=go(f4);
     f4.x=f4.x/num;
     f4.y=f4.y/num;
     return f4;

 }
 fen fen::operator*(fen f)
 {
     fen f4;
     int num=0,i=0;
     f4.x=x*f.x;
     f4.y=y*f.y;
     num=go(f4);
     f4.x=f4.x/num;
     f4.y=f4.y/num;
     return f4;

 }
 fen fen::operator/(fen f)
 {
     fen f4;
     int num=0,i=0;
     f4.x=x*f.y;
     f4.y=y*f.x;
   num=go(f4);
     f4.x=f4.x/num;
     f4.y=f4.y/num;
     return f4;

 }
int fen::go(fen f4)
{
    /*int i=0,num=0;
    (f4.x>f4.y)?(i=f4.y):(i=f4.x);
    i=fabs(i);
     for(i;i>0;i--)
     if((f4.x%i==0)&&(f4.y%i==0))
        {
        num=i;
     break;
        }
        return num;*/

        int m,n,rem;
        (f4.x>f4.y)?(n=fabs(f4.y),m=fabs(f4.x)):(m=fabs(f4.y),n=fabs(f4.x));
        while(n>0)
        {
            rem=m%n;
            m=n;
            n=rem;

        }
        return m;

}
 

展开阅读全文

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

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读