第八周实验报告 任务四(改)

源程序:

#include<iostream.h>

//using namespace std;

class CFraction
{
private:
	
	int nume;                            // 分子
	
	int deno;                            // 分母
	
public:
	
	CFraction(int nu=0,int de=1);        //构造函数,初始化用
	
	void Simplify();		        	 //化简(使分子分母没有公因子)
	
	void output(int style=0);	       	 //输出:以8/6为例,style为0时,输出8/6;
	
	//style为1时,输出4/3;
	
	//style为2时,输出1(1/3),表示一又三分之一;
	
	//不给出参数和非1、2,认为是方式0
	
	CFraction operator +(CFraction &c);  //声明重载运算符 + 的函数
	
	CFraction operator -(CFraction &c);  //声明重载运算符 + 的函数
	
	CFraction operator *(CFraction &c);  //声明重载运算符 + 的函数
	
	CFraction operator /(CFraction &c);  //声明重载运算符 + 的函数

	CFraction operator +(int &t);  //声明重载运算符 + 的函数
	
	CFraction operator -(int &t);  //声明重载运算符 - 的函数
	
	CFraction operator *(int &t);  //声明重载运算符 * 的函数
	
	CFraction operator /(int &t);  //声明重载运算符 / 的函数

	friend CFraction operator +(int &t, CFraction &c);  //声明重载运算符 + 的函数

	friend CFraction operator -(int &t, CFraction &c);  //声明重载运算符 + 的函数

	friend CFraction operator *(int &t, CFraction &c);  //声明重载运算符 + 的函数

	friend CFraction operator /(int &t, CFraction &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);	
};

CFraction::CFraction(int nu, int de)
{
	nume = nu;
	
	deno = de;
}

void CFraction::Simplify()               //化简(使分子分母没有公因子)
{
	int i, a;
	
	if(nume > deno)
	{
		a = nume;
	}
	else
	{
		a = deno;
	}
	
	for(i = a; i > 1; -- i)
	{
		
		if(nume % i == 0 && deno % i == 0)
		{
			nume = nume / i;
			
			deno = deno / i;
		}
	}
}

void CFraction::output(int style )
{
	if(style == 0)
	{
		cout<< nume << '/' << deno << endl;
	}
	
	if(style == 1)
	{
		Simplify();
		
		if(nume % deno == 0)
		{
			cout<< "化到最简后的分数为:" <<nume / deno << endl;
		}
		else
		{
			cout<< "化到最简后的分数为:" <<nume << '/' << deno << endl;
		}
	}
	
	if(style == 2)
	{
		int n;
		
		cout<< "化到真分数的分数为:";
		
		
		if(nume % deno == 0)
		{
			cout<< nume / deno << endl;
		}
		
		else
		{
			
			if(nume < deno)
			{
				cout<< nume << '/' << deno << endl;
			}
			
			else
			{
				n = nume / deno;
				
				cout<< n << "(" <<nume - n * deno << '/' << deno <<")"<<endl;
			}
		}
	}
}

CFraction CFraction::operator +(CFraction &c)
{
	return CFraction (nume * c.deno + deno * c.nume, deno * c.deno);
}

CFraction CFraction::operator -(CFraction &c)
{
	return CFraction (nume * c.deno - deno * c.nume, deno * c.deno);
}

CFraction CFraction::operator *(CFraction &c)
{
	return CFraction (nume * c.nume, deno * c.deno);
}

CFraction CFraction::operator /(CFraction &c)
{
	return CFraction (nume * c.deno, deno  * c.nume);
}

CFraction CFraction::operator +(int &t)  //定义重载运算符 + 的函数
{
	return CFraction (nume + t * deno, deno);
}

CFraction CFraction::operator -(int &t)  //定义重载运算符 - 的函数
{
	return CFraction (nume - t * deno, deno);
}

CFraction CFraction::operator *(int &t)  //声明重载运算符 * 的函数
{
	return CFraction ( nume * t, deno);
}

CFraction CFraction::operator /(int &t)  //声明重载运算符 / 的函数
{
	return CFraction (nume / t, deno);
}

CFraction operator +(int &t, CFraction &c)  //声明重载运算符 + 的函数
{
		return CFraction (c.nume + t * c.deno, c.deno);
}

CFraction operator -(int &t, CFraction &c)  //声明重载运算符 + 的函数
{
	return CFraction (t * c.deno - c.nume, c.deno);
}

CFraction operator *(int &t, CFraction &c)  //声明重载运算符 + 的函数
{
	return CFraction (c.nume * t, c.deno);
}

CFraction operator /(int &t, CFraction &c)  //声明重载运算符 + 的函数
{
	return CFraction (t * c.deno, c.nume);
}
	
bool CFraction::operator > (CFraction &c)
{
	if(deno > c.deno)
	{
		return true;
	}
	
	if(nume > c.nume)
	{
		return true;
	}
	
	else
	{
		return false;
	}
}

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

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

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

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

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


int main()
{
	CFraction c1(8, 3), c2(9, 2), c3, c4, c5, c6, c7, c8, c9,
		      c10, c11, c12, c13, c14, c15, c16, c17, c18;

	int a = 2;
	
	cout << "c1 = ";
	
	c1.output(0);
	
	cout << "c2 = ";
	
	c2.output(0);
	
	c3 = c1 + c2;
	
	cout << "c1 + c2 = ";
	
	c3.output(0);
	
	c3.output(1);
	
	c3.output(2);
	
	c4 = c1 - c2;
	
	cout << "c1 - c2 = ";
	
	c4.output(0);
	
	c4.output(1);
	
	c4.output(2);
	
	c5 = c1 * c2;
	
	cout << "c1 * c2 = ";
	
	c5.output(0);
	
	c5.output(1);
	
	c5.output(2);
	
	c6 = c1 / c2;
	
	cout << "c1 / c2 = ";
	
	c6.output(0);
	
	c6.output(1);
	
	c6.output(2);

	c7 = c1 + a;

	cout << "c1 + 2 = ";

	c7.output(0);

    c7.output(1);
	
    c7.output(2);

	c8 = c1 - a;

	cout << "c1 - 2 = ";

	c8.output(0);

    c8.output(1);
	
    c8.output(2);

	c9 = c1 * a;

	cout << "c1 * 2 = ";

	c9.output(0);

    c9.output(1);
	
    c9.output(2);

	c10 = c1 / a;

	cout << "c1 / 2 = ";

	c10.output(0);

    c10.output(1);
	
    c10.output(2);

	c11 = c1 + a;

	cout << "c1 + 2 = ";

	c11.output(0);

    c11.output(1);
	
    c11.output(2);

	c12 = a + c1;

	cout << "2 + c1 = ";

	c12.output(0);

    c12.output(1);
	
    c12.output(2);

	c13 = c2 - a;

	cout << "c2 - 2 = ";

	c13.output(0);

    c13.output(1);
	
    c13.output(2);

	c14 = a - c2;

	cout << "2 - c2 = ";

	c14.output(0);

    c14.output(1);
	
    c14.output(2);

	c15 = c1 * a;

	cout << "c1 * 2 = ";

	c15.output(0);

    c15.output(1);
	
    c15.output(2);

	c16 = a * c1;

	cout << "2 * c1 = ";

	c16.output(0);

    c16.output(1);
	
    c16.output(2);

	c17 = c2 / a;

	cout << "c2 / 2 = ";

	c17.output(0);

    c17.output(1);
	
    c17.output(2);

	c18 = a / c2;

	cout << "2 / c2 = ";

	c18.output(0);

    c18.output(1);
	
    c18.output(2);

	//system("pause");

	return 0;
}

截图:


真的好傻啊我····哎·····

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值