源程序:
#include<iostream.h>
//using namespace std;
class CFraction
{
private:
int nume; // 分子
int deno; // 分母
public:
CFraction(int nu=0,int de=1); //构造函数,初始化用
void Simplify(); //化简(使分子分母没有公因子)
void output(int style=0); //输出:以8/6为例,style为0时,输出8/6;
//style为1时,输出4/3;
//style为2时,输出1(1/3),表示一又三分之一;
//不给出参数和非1、2,认为是方式0
CFraction operator +(CFraction &c); //声明重载运算符 + 的函数
CFraction operator -(CFraction &c); //声明重载运算符 + 的函数
CFraction operator *(CFraction &c); //声明重载运算符 + 的函数
CFraction operator /(CFraction &c); //声明重载运算符 + 的函数
CFraction operator +(int &t); //声明重载运算符 + 的函数
CFraction operator -(int &t); //声明重载运算符 - 的函数
CFraction operator *(int &t); //声明重载运算符 * 的函数
CFraction operator /(int &t); //声明重载运算符 / 的函数
friend CFraction operator +(int &t, CFraction &c); //声明重载运算符 + 的函数
friend CFraction operator -(int &t, CFraction &c); //声明重载运算符 + 的函数
friend CFraction operator *(int &t, CFraction &c); //声明重载运算符 + 的函数
friend CFraction operator /(int &t, CFraction &c); //声明重载运算符 + 的函数
bool operator > (CFraction &c);
bool operator < (CFraction &c);
bool operator >= (CFraction &c);
bool operator <= (CFraction &c);
bool operator == (CFraction &c);
bool operator != (CFraction &c);
};
CFraction::CFraction(int nu, int de)
{
nume = nu;
deno = de;
}
void CFraction::Simplify() //化简(使分子分母没有公因子)
{
int i, a;
if(nume > deno)
{
a = nume;
}
else
{
a = deno;
}
for(i = a; i > 1; -- i)
{
if(nume % i == 0 && deno % i == 0)
{
nume = nume / i;
deno = deno / i;
}
}
}
void CFraction::output(int style )
{
if(style == 0)
{
cout<< nume << '/' << deno << endl;
}
if(style == 1)
{
Simplify();
if(nume % deno == 0)
{
cout<< "化到最简后的分数为:" <<nume / deno << endl;
}
else
{
cout<< "化到最简后的分数为:" <<nume << '/' << deno << endl;
}
}
if(style == 2)
{
int n;
cout<< "化到真分数的分数为:";
if(nume % deno == 0)
{
cout<< nume / deno << endl;
}
else
{
if(nume < deno)
{
cout<< nume << '/' << deno << endl;
}
else
{
n = nume / deno;
cout<< n << "(" <<nume - n * deno << '/' << deno <<")"<<endl;
}
}
}
}
CFraction CFraction::operator +(CFraction &c)
{
return CFraction (nume * c.deno + deno * c.nume, deno * c.deno);
}
CFraction CFraction::operator -(CFraction &c)
{
return CFraction (nume * c.deno - deno * c.nume, deno * c.deno);
}
CFraction CFraction::operator *(CFraction &c)
{
return CFraction (nume * c.nume, deno * c.deno);
}
CFraction CFraction::operator /(CFraction &c)
{
return CFraction (nume * c.deno, deno * c.nume);
}
CFraction CFraction::operator +(int &t) //定义重载运算符 + 的函数
{
return CFraction (nume + t * deno, deno);
}
CFraction CFraction::operator -(int &t) //定义重载运算符 - 的函数
{
return CFraction (nume - t * deno, deno);
}
CFraction CFraction::operator *(int &t) //声明重载运算符 * 的函数
{
return CFraction ( nume * t, deno);
}
CFraction CFraction::operator /(int &t) //声明重载运算符 / 的函数
{
return CFraction (nume / t, deno);
}
CFraction operator +(int &t, CFraction &c) //声明重载运算符 + 的函数
{
return CFraction (c.nume + t * c.deno, c.deno);
}
CFraction operator -(int &t, CFraction &c) //声明重载运算符 + 的函数
{
return CFraction (t * c.deno - c.nume, c.deno);
}
CFraction operator *(int &t, CFraction &c) //声明重载运算符 + 的函数
{
return CFraction (c.nume * t, c.deno);
}
CFraction operator /(int &t, CFraction &c) //声明重载运算符 + 的函数
{
return CFraction (t * c.deno, c.nume);
}
bool CFraction::operator > (CFraction &c)
{
if(deno > c.deno)
{
return true;
}
if(nume > c.nume)
{
return true;
}
else
{
return false;
}
}
bool CFraction::operator < (CFraction &c)
{
if(deno < c.deno)
{
return true;
}
if(nume < c.nume)
{
return true;
}
else
{
return false;
}
}
bool CFraction::operator >= (CFraction &c)
{
if(*this < c)
{
return false;
}
else
{
return true;
}
}
bool CFraction::operator <= (CFraction &c)
{
if(*this > c)
{
return false;
}
else
{
return true;
}
}
bool CFraction::operator == (CFraction &c)
{
if(nume == c.nume && deno == c.deno)
{
return true;
}
else
{
return false;
}
}
bool CFraction::operator != (CFraction &c)
{
if(nume == c.nume && deno == c.deno)
{
return false;
}
else
{
return true;
}
}
int main()
{
CFraction c1(8, 3), c2(9, 2), c3, c4, c5, c6, c7, c8, c9,
c10, c11, c12, c13, c14, c15, c16, c17, c18;
int a = 2;
cout << "c1 = ";
c1.output(0);
cout << "c2 = ";
c2.output(0);
c3 = c1 + c2;
cout << "c1 + c2 = ";
c3.output(0);
c3.output(1);
c3.output(2);
c4 = c1 - c2;
cout << "c1 - c2 = ";
c4.output(0);
c4.output(1);
c4.output(2);
c5 = c1 * c2;
cout << "c1 * c2 = ";
c5.output(0);
c5.output(1);
c5.output(2);
c6 = c1 / c2;
cout << "c1 / c2 = ";
c6.output(0);
c6.output(1);
c6.output(2);
c7 = c1 + a;
cout << "c1 + 2 = ";
c7.output(0);
c7.output(1);
c7.output(2);
c8 = c1 - a;
cout << "c1 - 2 = ";
c8.output(0);
c8.output(1);
c8.output(2);
c9 = c1 * a;
cout << "c1 * 2 = ";
c9.output(0);
c9.output(1);
c9.output(2);
c10 = c1 / a;
cout << "c1 / 2 = ";
c10.output(0);
c10.output(1);
c10.output(2);
c11 = c1 + a;
cout << "c1 + 2 = ";
c11.output(0);
c11.output(1);
c11.output(2);
c12 = a + c1;
cout << "2 + c1 = ";
c12.output(0);
c12.output(1);
c12.output(2);
c13 = c2 - a;
cout << "c2 - 2 = ";
c13.output(0);
c13.output(1);
c13.output(2);
c14 = a - c2;
cout << "2 - c2 = ";
c14.output(0);
c14.output(1);
c14.output(2);
c15 = c1 * a;
cout << "c1 * 2 = ";
c15.output(0);
c15.output(1);
c15.output(2);
c16 = a * c1;
cout << "2 * c1 = ";
c16.output(0);
c16.output(1);
c16.output(2);
c17 = c2 / a;
cout << "c2 / 2 = ";
c17.output(0);
c17.output(1);
c17.output(2);
c18 = a / c2;
cout << "2 / c2 = ";
c18.output(0);
c18.output(1);
c18.output(2);
//system("pause");
return 0;
}
截图:
真的好傻啊我····哎·····