代码拉取完成,页面将自动刷新
#include"Fraction.h"
void Fraction::reduce()
{
//分子小于分母
if (this->m_fz < this->m_fm)
{
for (int i = this->m_fz; i >= 1; i--)
{
if ((this->m_fz % i == 0) && (this->m_fm % i == 0))
{
this->m_fz /= i;
this->m_fm /= i;
}
}
}
//分子大于等于分母
else
{
for (int i = this->m_fm; i >= 1; i--)
{
if ((this->m_fz % i == 0) && (this->m_fm % i == 0))
{
this->m_fz /= i;
this->m_fm /= i;
}
}
}
}
ostream& operator<< (ostream& cout, Fraction f)
{
cout << f.m_fz << "/" << f.m_fm;
return cout;
}
istream& operator>>(istream& cin, Fraction &f)// Q1:???这里为啥加引用才能过去
{
cin >> f.m_fz >> f.m_fm;
return cin;
}
Fraction ::Fraction(int fz,int fm)
{
while (1)
{
if (fm != 0)
{
break;
}
else
{
cout << "输入有误,请重新输入分子和分母" << endl;
cin >> fz >> fm;
}
}
this->m_fz = fz;
this->m_fm = fm;
}
Fraction Fraction::operator+(Fraction&f2)
{
static Fraction f3(0, 1);
f3.m_fz = this->m_fm * f2.m_fz + f2.m_fm * this->m_fz;
f3.m_fm = this->m_fm * f2.m_fm;
return f3;
}
Fraction Fraction::operator-(Fraction& f2)
{
static Fraction f3(0, 1);
f3.m_fz = this->m_fm * f2.m_fz - f2.m_fm * this->m_fz;
f3.m_fm = this->m_fm * f2.m_fm;
return f3;
}
Fraction Fraction::operator*(Fraction& f2)
{
static Fraction f3(0, 1);
f3.m_fz = this->m_fz * f2.m_fz;
f3.m_fm = this->m_fm * f2.m_fm;
return f3;
}
Fraction Fraction::operator/(Fraction& f2)
{
static Fraction f3(0, 1);
f3.m_fz = this->m_fz * f2.m_fm;
f3.m_fm = this->m_fm * f2.m_fz;
return f3;
}
//前置++
Fraction& Fraction::operator++()
{
this->m_fz = this->m_fz + this->m_fm;
return *this; //返回自身,返回类型是 类& 否则会在返回时创建一个新对象
}
//后置++
Fraction Fraction::operator++(int)
{
Fraction temp = *this;
this->m_fz = this->m_fz + this->m_fm;
return temp;
}
//后置--
Fraction Fraction::operator--(int)
{
Fraction temp = *this;
this->m_fz = this->m_fz - this->m_fm;
return temp;
}
//<
bool Fraction::operator<(Fraction& f2)
{
this->m_fz = this->m_fz * f2.m_fm;
f2.m_fz = f2.m_fz * this->m_fm;
if (this->m_fz < f2.m_fz)
{
return true;
}
else
{
return false;
}
}
//>
bool Fraction::operator>(Fraction& f2)
{
this->m_fz = this->m_fz * f2.m_fm;
f2.m_fz = f2.m_fz * this->m_fm;
if (this->m_fz > f2.m_fz)
{
return true;
}
else
{
return false;
}
}
// ==
bool Fraction::operator==(Fraction& f2)
{
this->m_fz = this->m_fz * f2.m_fm;
f2.m_fz = f2.m_fz * this->m_fm;
if (this->m_fz == f2.m_fz)
{
return true;
}
else
{
return false;
}
}
//!=
bool Fraction::operator!=(Fraction& f2)
{
this->m_fz = this->m_fz * f2.m_fm;
f2.m_fz = f2.m_fz * this->m_fm;
if (this->m_fz != f2.m_fz)
{
return true;
}
else
{
return false;
}
}
void Fraction::display()
{
cout << this->m_fz << "/" << this->m_fm << endl;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。