分数类运算

来源:互联网 发布:淘宝商城运营 编辑:程序博客网 时间:2024/04/29 07:02
#include<iostream.h>    
class CFraction
{
private:
int nume;//分子
int deno;//分母
public:
CFraction(int a=0,int b=1)
{
nume=a;
deno=b;
}//初始化
~ CFraction()
{
cout<<"over over over!!!"<<endl;
}//初始化
void simplify();
void display();
int gcd(int nu,int de);
CFraction operator ++ ();
CFraction operator ++ (int c);
CFraction operator -- ();
CFraction operator -- (int 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);


friend CFraction operator + (CFraction &c1,CFraction &c2);
friend CFraction operator - (CFraction &c1,CFraction &c2);
friend CFraction operator * (CFraction &c1,CFraction &c2);
friend CFraction operator / (CFraction &c1,CFraction &c2);


friend CFraction operator + (CFraction &c1,int c2);
friend CFraction operator - (CFraction &c1,int c2);
friend CFraction operator * (CFraction &c1,int c2);
friend CFraction operator / (CFraction &c1,int c2);


friend CFraction operator + (int c1,CFraction &c2);
friend CFraction operator - (int c1,CFraction &c2);
friend CFraction operator * (int c1,CFraction &c2);
friend CFraction operator / (int c1,CFraction &c2);


};


int CFraction:: gcd(int nu,int de)
{
int a,b,i,j;
a=nu;
b=de;
if(a<b)
{
i=a;
a=b;
b=i;
}
while (b!=0)
{
j=a%b;
a=b;
b=j;
}
return a;
}


void CFraction:: simplify()
{
int n;
if(nume<0 && deno>0)
{
n=gcd(-nume,deno);
}
else if(nume<0 && deno<0)
{
n=-gcd(-nume,-deno);
}
else if(nume>0 && deno>0)
{
n=gcd(nume,deno);
}

else if(nume>0 && deno<0)
{
n=gcd(nume,-deno);
}
nume=nume/n;
deno=deno/n;
}


void CFraction::display()
{
cout<<nume<<"/"<<deno<<endl;
}




CFraction CFraction:: operator ++ ()
{
return CFraction(nume+=1,deno+=1);
}
CFraction CFraction:: operator ++ (int c)
{
return CFraction(nume++,deno++);
}
CFraction CFraction:: operator -- ()
{
return CFraction(nume-=1,deno-=1);
}
CFraction CFraction:: operator -- (int c)
{
return CFraction(nume--,deno--);
}






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




CFraction operator + (CFraction &c1,CFraction &c2)
{
return CFraction(c1.nume*c2.deno+c2.nume*c1.deno,c1.deno*c2.deno);
}
CFraction operator - (CFraction &c1,CFraction &c2)
{
return CFraction(c1.nume*c2.deno-c2.nume*c1.deno,c1.deno*c2.deno);
}
CFraction operator * (CFraction &c1,CFraction &c2)
{
return CFraction(c1.nume*c2.nume,c1.deno*c2.deno);
}
CFraction operator / (CFraction &c1,CFraction &c2)
{
return CFraction(c1.nume*c2.deno,c1.deno*c2.nume);
}








CFraction operator + (CFraction &c1,int c2)
{
return(c1.nume+c2*c1.deno,c1.deno);
}
CFraction operator - (CFraction &c1,int c2)
{
return(c1.nume-c2*c1.deno,c1.deno);
}
CFraction operator * (CFraction &c1,int c2)
{
return(c1.nume*c2,c1.deno);
}
CFraction operator / (CFraction &c1,int c2)
{
return(c1.nume,c1.deno*c2);
}






CFraction operator + (int c1,CFraction &c2)
{
return(c1*c2.deno+c2.nume,c2.deno);
}
CFraction operator - (int c1,CFraction &c2)
{
return(c1*c2.deno-c2.nume,c2.deno);
}
CFraction operator * (int c1,CFraction &c2)
{
return(c1*c2.nume,c2.deno);
}
CFraction operator / (int c1,CFraction &c2)
{
return(c1*c2.deno,c2.nume);
}
 void main()
 {
CFraction x1(3,8),x2(-5,-7);
CFraction x3;


cout<<"x1=";
x1.simplify();
x1.display();


cout<<"x2=";
x2.simplify();
x2.display();


x3=x1+x2;
x3.simplify();
cout<<"x1+x2=";
x3.display();


x3=x1-x2;
x3.simplify();
cout<<"x1-x2=";
x3.display();


x3=x1*x2;
x3.simplify();
cout<<"x1*x2=";
x3.display();




x3=x1/x2;
x3.simplify();
cout<<"x1/x2=";
x3.display();


x3=2+x2;
x3.simplify();
cout<<"2+x2=";
x3.display();


x3=2-x2;
x3.simplify();
cout<<"2-x2=";
x3.display();


x3=2*x2;
x3.simplify();
cout<<"2*x2=";
x3.display();


x3=2/x2;
x3.simplify();
cout<<"2/x2=";
x3.display();




x3=x1+2;
x3.simplify();
cout<<"x1+2=";
x3.display();


x3=x1-2;
x3.simplify();
cout<<"x1-2=";
x3.display();


x3=x1*2;
x3.simplify();
cout<<"x1*2=";
x3.display();


x3=x1/2;
x3.simplify();
cout<<"x1/2=";
x3.display();


x1. operator ++ ();
x1.simplify();
cout<<"x1=";
x1.display();


x2. operator -- ();
x2.simplify();
cout<<"x2=";
x2.display();






x1.operator >(x2);
x1.operator <(x2);
x1.operator >=(x2);
x1.operator <=(x2);
x1.operator ==(x2);
x1.operator !=(x2);  

if(x1>x2)
{
cout<<"x1>x2"<<endl;
}
if(x1<x2)
{
cout<<"x1<x2"<<endl;
}
if(x1>=x2)
{
cout<<"x1>=x2"<<endl;
}
if(x1<=x2)
{
cout<<"x1<=x2"<<endl;
}
if(x1==x2)
{
cout<<"x1==x2"<<endl;
}
if(x1!=x2)
{
cout<<"x1!=x2"<<endl;
}


cout<<endl;

}



0 1
原创粉丝点击