C++ 封装分数类(加减乘除大于小于)

C++ 封装分数类,话少说直接上代码

/*****************************************************************************************/

fraction.h代码

#pragma once

#include <iostream>

using namespace  std;
class fraction
{
public:
fraction(int numerator,int denominator );
~fraction(void);

fraction operator +(const fraction other );//加法
fraction operator -(const fraction other );//减法
fraction operator *(const fraction other );//乘法
fraction operator /(const fraction other );//除法

bool operator > (const fraction other);   //大小比较
bool operator <(const fraction other);    //大小比较
bool operator == (const fraction other);   //等于比较
private: 
//最大公约数
int  MaxCommonFactor(int fractiona,int fractionb);
//最小公倍数
int MinCommonMultiple(int fractiona,int fractionb);
private:
int mNumerator;//分子
int mDenominator;//分母

};

/*****************************************************************************************/

fraction.cpp 代码

#include "fraction.h"

fraction::fraction(int numerator,int denominator):
mNumerator(numerator),
mDenominator(denominator)
{
if (denominator==0)
{
cout << "分母不能为0! " << endl;  
exit(0);//直接退出  
}
printf("成功创建分数:%d/%d\n",numerator,denominator);
}

fraction::~fraction(void)
{
}

fraction fraction::operator +(const fraction other )
{
fraction temp(1,1);;
temp.mNumerator=mNumerator*other.mDenominator+other.mNumerator*mDenominator;//求分子
temp.mDenominator=mDenominator*other.mDenominator;                         //求分
int commonfactor = MaxCommonFactor(temp.mNumerator,temp.mDenominator);      //约分
if (commonfactor!=1)
{
temp.mNumerator=temp.mNumerator/commonfactor;
temp.mDenominator=temp.mDenominator/commonfactor;
}
printf("分数和:%d/%d\n",temp.mNumerator,temp.mDenominator);
return temp;
}
fraction fraction::operator -(const fraction other )
{
fraction temp(1,1);;
temp.mNumerator=mNumerator*other.mDenominator-other.mNumerator*mDenominator;//求分子
temp.mDenominator=mDenominator*other.mDenominator;                         //求分母
int commonfactor = MaxCommonFactor(temp.mNumerator,temp.mDenominator);      //约分
if (commonfactor!=1)
{
temp.mNumerator=temp.mNumerator/commonfactor;
temp.mDenominator=temp.mDenominator/commonfactor;
}
printf("分数差:%d/%d\n",temp.mNumerator,temp.mDenominator);
return temp;
}
fraction fraction::operator *(const fraction other )
{
fraction temp(1,1);
temp.mNumerator=mNumerator*other.mNumerator;                                 //求分子
temp.mDenominator=mDenominator*other.mDenominator;                         //求分母
int commonfactor = MaxCommonFactor(temp.mNumerator,temp.mDenominator);      //约分
if (commonfactor!=1)
{
temp.mNumerator=temp.mNumerator/commonfactor;
temp.mDenominator=temp.mDenominator/commonfactor;
}
printf("分数积:%d/%d\n",temp.mNumerator,temp.mDenominator);
return temp;
}
fraction fraction::operator /(const fraction other )
{
fraction temp(1,1);
if (other.mNumerator==0)
{
printf("除数不能为0!\n");
}
temp.mNumerator=mNumerator*other.mDenominator;//求分子
temp.mDenominator=mDenominator*other.mNumerator;                         //求分母
int commonfactor = MaxCommonFactor(temp.mNumerator,temp.mDenominator);      //约分
if (commonfactor!=1)
{
temp.mNumerator=temp.mNumerator/commonfactor;
temp.mDenominator=temp.mDenominator/commonfactor;
}
printf("分数商:%d/%d\n",temp.mNumerator,temp.mDenominator);
return temp;
}
int fraction::MaxCommonFactor(int fractiona,int fractionb)
{
int tem = fractiona>fractionb?fractionb:fractiona;//找出较小的数字
int commonfactor=1;
for (int i=1;i<=tem;i++)
{
if ((fractiona%i==0)&&(fractionb%i==0))
{
commonfactor=i;
}
}
return commonfactor;
}

bool fraction::operator > (const fraction other)
{
fraction temp(1,1);
temp =*this-other;
if (temp.mNumerator==0)
{
return false;
}
int result = temp.mNumerator/temp.mDenominator;
if (result<0)
{
return false;
}else 
{
return true;
}
}
bool fraction::operator <(const fraction other)
{
fraction temp(1,1);
temp =*this-other;
if (temp.mNumerator==0)
{
return false;
}
int result = temp.mNumerator/temp.mDenominator;
if (result<0)
{
return true;
}else 
{
return false;
}
}
bool fraction::operator == (const fraction other)
{
fraction temp(1,1);
temp =*this-other;
if (temp.mNumerator==0)
{
return true;
}
return false;
}

猜你喜欢

转载自blog.csdn.net/wangjianbo09/article/details/79291910