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

源程序:

#include<iostream>

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);  //声明重载运算符 + 的函数
	
	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);
}

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(1, 3), c2(4, 2), c3;
	
	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);
	
    CFraction c5(2, 5), c6(3, 7), c7;
	
	cout << "c5 = ";
	
	c5.output(0);
	
	cout << "c6 = ";
	
	c6.output(0);
	
	c7 = c5 - c6;
	
	cout << "c5 - c6 = ";
	
	c7.output(0);
	
	c7.output(1);
	
	c7.output(2);
	
	CFraction c8(5, 3), c9(3, 2), c10;
	
	cout << "c8 = ";
	
	c8.output(0);
	
	cout << "c9 = ";
	
	c9.output(0);
	
	c10 = c8 * c9;
	
	cout << "c8 * c9 = ";
	
	c10.output(0);
	
	c10.output(1);
	
	c10.output(2);
	
	CFraction c11(8, 9), c12(4, 3), c13;
	
	cout << "c11 = ";
	
	c11.output(0);
	
	cout << "c12 = ";
	
	c12.output(0);
	
	c13 = c11 / c12;
	
	cout << "c11 / c12 = ";
	
	c13.output(0);
	
	c13.output(1);
	
	c13.output(2);
	
	CFraction c14(6, 7), c15(3, 4);
	
	cout << "c14 = ";
	
	c14.output();
	
	cout << "c15 = ";
	
	c15.output();
	
	cout << "c14 > c15" << (c14.operator >(c15)?" 成立":" 不成立") << endl;
	
	CFraction c16(4, 5), c17(2, 3);
	
	cout << "c16 = ";
	
	c16.output();
	
	cout << "c17 = ";
	
	c17.output();
	
	cout << "c16 < c17" << (c16.operator <(c17)?" 成立":" 不成立") << endl;

		
	CFraction c18(2, 5), c19(2, 7);
	
	cout << "c18 = ";
	
	c18.output();
	
	cout << "c19 = ";
	
	c19.output();
	
	cout << "c18 >= c19" << (c18.operator >=(c19)?" 成立":" 不成立") << endl;

		
	CFraction c20(4, 5), c21(2, 3);
	
	cout << "c20 = ";
	
	c20.output();
	
	cout << "c21 = ";
	
	c21.output();
	
	cout << "c20 <= c21" << (c20.operator <=(c21)?" 成立":" 不成立") << endl;
	
		
	CFraction c22(4, 5), c23(4, 5);
	
	cout << "c22 = ";
	
	c22.output();
	
	cout << "c23 = ";
	
	c23.output();
	
	cout << "c22 == c23" << (c22.operator ==(c23)?" 成立":" 不成立") << endl;

		
	CFraction c24(6, 7), c25(6, 7);
	
	cout << "c24 = ";
	
	c24.output();
	
	cout << "c25 = ";
	
	c25.output();
	
	cout << "c24 != c25" << (c24.operator !=(c25)?" 成立":" 不成立") << endl;
	
    system("pause");
	
	return 0;
}



发完博文之后知道丢人了····没有把题目看全····我差了····

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值