⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8_3.cpp

📁 运算符重载的实验源代码
💻 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 + -