/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: object.cpp
* 作者:赵晓晨
* 完成日期: 2013年04月20日
* 版本号: v1.0
* 输入描述:无
* 问题描述:无
* 程序输出:无
*/
#include<iostream>
using namespace std;
class CFraction
{
private:
int nume;
int deno;
public:
CFraction(int n=1,int d=1):nume(n),deno(d){};
CFraction operator+(CFraction &c);
CFraction operator-(CFraction &c);
CFraction operator*(CFraction &c);
CFraction operator/(CFraction &c);
CFraction operator-();
bool operator>(CFraction &c);
CFraction simply(CFraction &c);
friend int divisor(CFraction &c);
friend int multiple(CFraction &c);
void display();
};
//定义重载运算符+的函数
CFraction CFraction::operator+(CFraction &c)
{
CFraction a;
a.deno=deno*c.deno;
a.nume=nume*c.deno+c.nume*deno;
a=simply(a);
return a;
}
CFraction CFraction::operator-(CFraction &c)
{
CFraction a;
a.deno=deno*c.deno;
a.nume=nume*c.deno-c.nume*deno;
a=simply(a);
return a;
}
CFraction CFraction::operator*(CFraction &c)
{
CFraction a;
a.deno=deno*c.deno;
a.nume=nume*c.nume;
a=simply(a);
return a;
}
CFraction CFraction::operator/(CFraction &c)
{
CFraction a;
a.nume=nume*c.deno;
a.deno=deno*c.nume;
a=simply(a);
return a;
}
CFraction CFraction::operator-()
{
CFraction a;
a.deno=nume;
a.nume=deno;
a=simply(a);
return a;
}
bool CFraction::operator>(CFraction &c)
{
if(nume/deno>c.nume/c.deno)
return true;
else
return false;
}
CFraction CFraction::simply(CFraction &c)
{
CFraction a;
int b=divisor(c);
a.nume=c.nume/b;
a.deno=c.deno/b;
return a;
}
int divisor(CFraction &c)
{
int n=min(c.deno,c.nume);
for(int i=n;i>=0;i--)
{
if(c.deno%i==0 && c.nume%i==0)
{
return i;
break;
}
}
}
void CFraction::display()
{
cout<<nume<<"/"<<deno<<endl;
}
//用main函数进行调试
int main()
{
CFraction t1(1,2),t2(3,4),t3,t4,t5;
cout<<"t1+t2=";
t3=t1+t2;
t3.display();
cout<<"t2-t1=";
t3=t2-t1;
t3.display();
cout<<"t1*t2=";
t3=t1*t2;
t3.display();
cout<<"t1/t2=";
t3=t1/t2;
t3.display();
cout<<"去倒数";
t3=-t1;
t3.display();
if(t1>t2){
cout<<"t1>t2"<<endl;
}else{
cout<<"t1<t2"<<endl;
}
return 0;
}
结果: