分数类运算
来源:互联网 发布:淘宝商城运营 编辑:程序博客网 时间: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;
}
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
- 分数类运算
- 分数类--运算符重载
- 运算符重载 分数类
- 分数运算
- 分数运算
- 分数运算
- 分数运算
- 分数运算
- 分数运算
- 8.3 分数类的运算符重载
- 9-3分数类 运算符重载
- 分数类中的运算符重载
- 分数类中运算符重载
- 分数类中的运算符重载
- 分数类(运算符重载)
- 分数类-运算符重载修改bug
- 分数类中的运算符重载
- 分数类中的运算符重组
- 端口映射和DMZ的区别
- 搜索数字
- 【学习】数据离散化
- ,这样指定的class是同级的。同级的class需要看CSS文件的先后次序,后加载的css会覆盖前面加载的css。写到style的话因为是最后解析的所以是最高的一个优先级。
- 谈谈互联网后端基础设施
- 分数类运算
- 闲来开始一些安卓开发的总结
- 缓和曲线01概论
- 503错误(百度搜索答案)
- hackinglab.cn 注入关之一
- python 正则表达式的贪婪匹配与非贪婪匹配
- 云主机可以完全替代虚拟主机的市场吗?
- Struts2工程搭建
- jQuery封装框架