#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;
}
}
}
/*int multiple(CFraction &c){
int n=max(c.deno,deno);
while(n>0){
if(n%c.deno==0 && n%deno==0){
return n;
break;
}else{
n++;
}
}
}
*/
void CFraction::display(){
cout<<nume<<"/"<<deno<<endl;
}
int main(){
CFraction t1(3,4),t2(3,2),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;
}
运行结果: