第八周实验报告 任务三

源程序:

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

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);
}

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);
	
	system("pause");
	
	return 0;
}


截图:

 

完成了任务二,这个程序觉得无压力了····(好多代码是从第五周任务二中扒的···)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值