函数重载记录

#include<iostream>
#include<string>
#include<stdlib.h>

class Rational
{
    public:
           Rational(int num,int denom);

           Rational operator+(Rational rhs);
           Rational operator-(Rational rhs);
           Rational operator*(Rational rhs);
           Rational operator/(Rational rhs);

           void print();
    
    private:
           void normalize();
           int numerator;
           int denominator;
};

Rational::Rational(int num,int denom)
{
       numerator=num;
       denominator=denom;
       normalize();
}
//normalize对分数进行辗转求余简化操作;把负号移动到分子上

void Rational::normalize()
{
       //确保分母为正
       if(denominator<0)
       {
              numerator=-numerator;
              denominator=-denominator;
       }

       //辗转求最小公项式
       int a=abs(numerator);
       int b=abs(denominator);
       while(b>0)
       {
              int t=a%b;
              a=b;
              b=t;
       }
       numerator /=a;
       denominator/=a;
}

//加减乘除部分
Rational Rational::operator+(Rational rhs)
{
       int a=numerator;
       int b=denominator;
       int c=rhs.numerator;
       int d=rhs.denominator;
       int e=a*b+c*d;
       int f=b*d;
       return Rational(e,f);//用了除法函数
}

Rational Rational::operator-(Rational rhs)
{
       rhs.numerator=-rhs.numerator;
       return operator+(rhs);
}//这一段是个啥

Rational Rational::operator*(Rational rhs)
{
       int a=numerator;
       int b=denominator;
       int c=rhs.numerator;
       int d=rhs.denominator;
       int e=a*c;
       
       int d=rhs.denominator;//为什么声明两遍
       int e=a*c;
       int f=b*d;
       return Rational(e,f);
}//这一段啥意思

Rational Rational::operator/(Rational rhs)
{
       int t=rhs.numerator;
       rhs.numerator=rhs.denominator;
       rhs.denominator=t;
       return operator*(rhs);
}
void Rational::print()
{
       if(numerator%denominator==0)
           std::cout<<numerator/denominator;
       else
           std::cout<<numerator<<"/"<<denominator;
}
int main()
{
       Rational f1(2,16);
       Rational f2(7,8);

       Rational res=f1+f2;
       f1.print();
       std::cout<<"+";
       f2.print();
       std::cout<<"=";
       res.print();
       std::cout<<"\n";//加法运算

       return 0;

}

程序未完成

1.加减乘除功能未完善

2.结构没搞懂

//白天再改,暂时记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值