📄 8_3.cpp
字号:
#include<iostream>
using namespace std;
class rationalNumber
{
public:
rationalNumber();
void operator + (rationalNumber r2);
void operator - (rationalNumber r2);
void operator * (rationalNumber r2);
void operator / (rationalNumber r2);
void operator > (rationalNumber r2);
void operator < (rationalNumber r2);
void operator == (rationalNumber r2);
private:
int m,c;
};
rationalNumber::rationalNumber()
{
cout<<"请输入分数:";
cin>>c;
cin>>m;
while(m<=0)
{
cout<<"分母不能为非正数,请重新输入分数"<<endl;
cout<<"请输入分数:";
cin>>c;
cin>>m;
}
int x,y;
x=m;
y=c;
while(x!=y)
{
if(x>y)
x=x-y;
if(x<y)
y=y-x;
}
m=m/x;
c=c/x;
if(m==1)
cout<<"此为约分后的分数:"<<c<<endl;
else
cout<<"此为约分后的分数:"<<c<<"/"<<m<<endl;
}
void rationalNumber::operator + (rationalNumber r2)
{
int i,j,k,t,r,p;
j=m;
k=r2.m;
i=j*k;
if(j<k)
{
t=j;
j=k;
k=t;
}
while(k!=0)
{
r=j%k;
j=k;
k=r;
}
p=i/j;
c=c*p/m;
r2.c=r2.c*p/r2.m;
m=p;
c=c+r2.c;
int x1,y1;
x1=m;
y1=c;
while(x1!=y1)
{
if(x1>y1)
x1=x1-y1;
if(x1<y1)
y1=y1-x1;
}
m=m/x1;
c=c/x1;
cout<<"两分数的和为:"<<c<<"/"<<m<<endl;
}
void rationalNumber::operator - (rationalNumber r2)
{
int i,j,k,t,r,p;
j=m;
k=r2.m;
i=j*k;
if(j<k)
{
t=j;
j=k;
k=t;
}
while(k!=0)
{
r=j%k;
j=k;
k=r;
}
p=i/j;
c=c*p/m;
r2.c=r2.c*p/r2.m;
m=p;
if(c>r2.c)
c=c-r2.c;
else
c=r2.c-c;
int x2,y2;
x2=m;
y2=c;
while(x2!=y2)
{
if(x2>y2)
x2=x2-y2;
if(x2<y2)
y2=y2-x2;
}
m=m/x2;
c=c/x2;
cout<<"两分数的差为:"<<c<<"/"<<m<<endl;
}
void rationalNumber::operator * (rationalNumber r2)
{
m=m*r2.m;
c=c*r2.c;
int x3,y3;
x3=m;
y3=c;
while(x3!=y3)
{
if(x3>y3)
x3=x3-y3;
if(x3<y3)
y3=y3-x3;
}
m=m/x3;
c=c/x3;
cout<<"两分数的积为:"<<c<<"/"<<m<<endl;
}
void rationalNumber::operator / (rationalNumber r2)
{
m=m*r2.c;
c=c*r2.m;
int x4,y4;
x4=m;
y4=c;
while(x4!=y4)
{
if(x4>y4)
x4=x4-y4;
if(x4<y4)
y4=y4-x4;
}
m=m/x4;
c=c/x4;
cout<<"两分数的商为:"<<c<<"/"<<m<<endl;
}
void rationalNumber::operator > (rationalNumber r2)
{
int i,j,k,t,r,p;
j=m;
k=r2.m;
i=j*k;
if(j<k)
{
t=j;
j=k;
k=t;
}
while(k!=0)
{
r=j%k;
j=k;
k=r;
}
p=i/j;
c=c*p/m;
r2.c=r2.c*p/r2.m;
if(c>r2.c)
cout<<c/(p/m)<<"/"<<m<<"大于"<<r2.c/(p/r2.m)<<"/"<<r2.m<<endl;
else
cout<<r2.c/(p/r2.m)<<"/"<<r2.m<<"大于"<<c/(p/m)<<"/"<<m<<endl;
}
void rationalNumber::operator < (rationalNumber r2)
{
int i,j,k,t,r,p;
j=m;
k=r2.m;
i=j*k;
if(j<k)
{
t=j;
j=k;
k=t;
}
while(k!=0)
{
r=j%k;
j=k;
k=r;
}
p=i/j;
c=c*p/m;
r2.c=r2.c*p/r2.m;
if(c<r2.c)
cout<<c/(p/m)<<"/"<<m<<"小于"<<r2.c/(p/r2.m)<<"/"<<r2.m<<endl;
else
cout<<r2.c/(p/r2.m)<<"/"<<r2.m<<"小于"<<c/(p/m)<<"/"<<m<<endl;
}
void rationalNumber::operator == (rationalNumber r2)
{
int i,j,k,t,r,p;
j=m;
k=r2.m;
i=j*k;
if(j<k)
{
t=j;
j=k;
k=t;
}
while(k!=0)
{
r=j%k;
j=k;
k=r;
}
p=i/j;
c=c*p/m;
r2.c=r2.c*p/r2.m;
if(c==r2.c)
cout<<c/(p/m)<<"/"<<m<<"等于"<<r2.c/(p/r2.m)<<"/"<<r2.m<<endl;
else
cout<<r2.c/(p/r2.m)<<"/"<<r2.m<<"不等于"<<c/(p/m)<<"/"<<m<<endl;
}
void main()
{
int f;
rationalNumber r1,r2;
cout<<endl;
cout<<"请选择:加法-0 减法-1 乘法-2 除法-3 大于-4 小于-5 等于-6"<<endl;
cout<<"请选择...";
cin>>f;
switch(f)
{
case 0:
r1.operator +(r2);
break;
case 1:
r1.operator -(r2);
break;
case 2:
r1.operator *(r2);
break;
case 3:
r1.operator /(r2);
break;
case 4:
r1.operator >(r2);
break;
case 5:
r1.operator <(r2);
break;
case 6:
r1.operator ==(r2);
break;
default:cout<<"选择错误!!!"<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -