您的位置:首页 > 其它

2014第八周项目三--分数类的运算符重载

2014-04-16 19:45 232 查看
/*
*程序的版权和版本声明部分:
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:刘晓晓
*完成日期:2014年 04月15号
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: 无
*问题描述:
*程序输出:无
*问题分析:
*算法设计:
*/

#include <iostream>
using namespace std;
int gcd(int n,int m);
class CFraction
{
private:
int nume;  // 分子
int deno;  // 分母
public:
CFraction (int a=0,int b=0)
{

nume=a;
deno=b;
}
CFraction operator+(CFraction &c);
CFraction operator-(CFraction &c);
CFraction operator*(CFraction &c);
CFraction operator/(CFraction &c);
bool operator>(CFraction &c);
bool operator<(CFraction &c);
bool operator >=(CFraction &c);
bool operator<=(CFraction &c);
bool operator ==(CFraction &c);
void simplay();
void display();
};
CFraction CFraction::operator+(CFraction &c)
{
CFraction t;
t.nume=nume*c.deno+deno*c.nume;
t.deno=deno*c.deno;
return t;

}

CFraction CFraction::operator-(CFraction &c)
{
CFraction t;
t.nume=nume*c.deno-deno*c.nume;
t.deno=deno*c.deno;
return t;

}
CFraction CFraction::operator*(CFraction &c)
{
CFraction t;
t.nume=nume*c.nume;
t.deno=deno*c.deno;
return t;

}

CFraction CFraction::operator/(CFraction &c)
{
CFraction t;
t.nume=nume*c.deno;
t.deno=deno*c.nume;
return t;

}

bool CFraction ::operator >(CFraction &c)
{
if (nume*c.deno>deno*c.nume)
return true;
return false ;

}
bool CFraction ::operator <(CFraction &c)
{
if (nume*c.deno<deno*c.nume)
return true;
return false ;

}
bool CFraction ::operator >=(CFraction &c)
{
if (!(nume*c.deno<deno*c.nume))
return true;
return false ;

}
bool CFraction ::operator <=(CFraction &c)
{
if (!(nume*c.deno>deno*c.nume))
return true;
return false ;

}
bool CFraction ::operator ==(CFraction &c)
{
if (nume==c.nume&&deno==c.deno)
return true;
return false ;

}
void CFraction::display()
{

cout<< nume<<"/"<<deno<<endl;

}
void CFraction::simplay()
{
int n=gcd(deno, nume);
deno/=n;     // 化简
nume/=n;
}

// 求m,n的最大公约数
int gcd(int m, int n) //这个函数可以定义为类的成员函数,也可以为一般函数
{
int r;
if (m<n)
{
r=m;
m=n;
n=r;
}
while(r=m%n)  // 求m,n的最大公约数
{
m=n;
n=r;
}
return n;
}

int main()
{

CFraction t1(2,9),t2(4,16),t3;
cout<<"t1=";
t1.display();
cout<<"化简后t1=";
t1.simplay();
t1.display();
cout<<"t2=";

t2.display();
cout<<"化简后t2=";
t2.simplay();
t2.display();
cout<<"比较两个数的大小:"<<endl;
if (t1>t2)cout<<"t1>t2"<<endl;
if (t1<=t2)cout<<"t1<=t2"<<endl;
if (t1<t2)cout<<"t1<t2"<<endl;
if (t1==t2)cout<<"t1=t2"<<endl;
t3=t1+t2;
t3.simplay();
cout<<"t1+t2=";
t3.display();
t3=t2-t1;
t3.simplay();
cout<<"t2-t1=";

t3.display();

t3=t2*t1;
cout<<"t1*t2=";
t3.simplay();
t3.display();
t3=t1/t2;
cout<<"t1/t2=";
t3.simplay();
t3.display();

return 0;
}


一点一点增加函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: