您的位置:首页 > 其它

第五周上机任务项目2-分数类

2013-03-29 18:46 344 查看
01./*      
02.* 程序的版权和版本声明部分      
03.* Copyright (c)2013, 烟台大学计算机学院学生      
04.* All rightsreserved.      
05.* 文件名称: CFraction  .cpp                                 
06.* 作    者:赵冠哲                                  
07.* 完成日期:2013年3月29日      
08.* 版本号: v1.0            
09.* 输入描述:      
10.* 问题描述:    
11.*/     
#include <iostream>  
   using namespace std;  
class CFraction  
{  
private:  
    int nume;  // 分子  
	int deno;  // 分母  
public:  
	CFraction(int nu=0,int de=1); 
	void set(int nu,int de);
    void input();  
	void simplify();                //化简(使分子分母没有公因子)  
    void amplify(int n);            //放大n倍,如2/3放大5倍为10/3  
    void output(int style=0);       //输出:以8/6为例,style为0时,原样输出8/6;  
    //style为1时,输出化简后形式4/3;  
    //style为2时,输出1(1/3)形式,表示一又三分之一;  
    //style为3时,用小数形式输出,如1.3333;  
    //不给出参数和非1、2,认为是方式0  
};  
int main()  
{  
    CFraction cf1;  
	cf1.input();  
	cf1.amplify(5);  
	cf1.simplify();	
	cf1.output(0);  
    cf1.output(1);  
	cf1.output(2);  
    cf1.output(3);  
	
	   return 0;  
}  
CFraction::CFraction(int nu,int de)
{
	nume=nu;
	deno=de;
}
void CFraction::set(int nu,int de)
{
	nume=nu;
	deno=de;
	cout<<"输入的分式为:"<<nume<<"/"<<deno<<endl;
}
void CFraction::input()                 //按照"nu/de"的格式,如"5/2"的形式输入  
{  
	
	cout<<" 请输入分子、分母:";  
    cin>>nume>>deno;  
}  
void CFraction::simplify()                
{  
	int a,b,c,d,num1,num2,temp;                 
    num1=nume;  
    num2=deno;  
	c=nume;  
    d=deno;  
	if(num1>num2)   
    {  
		temp=num1; num1=num2; num2=temp; 
    }  
    a=num1; b=num2;  
    while(b!=0) 
    {  
        temp=a%b;  
        a=b;  
        b=temp;  
    }  
    c=c/a;  
    d=d/a;  
    cout<<"化简后为:"<<c<<"/"<<d<<endl;  
}  
void CFraction::amplify(int n)         
{  
    int a,b;                  
    a=nume;  
    b=deno;  
    a=a*n;  
    b=b*n;  
    cout<<"扩大倍数后为:"<<a<<"/"<<b<<endl;  
}  

void CFraction::output(int style)  
{  
    if(style==3)  
    {  
		double a;
		a=double(nume)/double(deno);
		cout<<"用小数形式输出为:"<<a<<endl;
	}
	
	else if(style==2) 
	{  
		int b;
		if(nume>deno)
		{
			b=nume/deno;
			cout<<"写成假分数为:"<<b<<"("<<(nume-deno*b)<<"/"<<deno<<")"<<endl;
		}
		else 
		{
			cout<<nume<<"/"<<deno<<endl;
		}
	}
	else if(style==1)  
	{  
		int a,b,c,d;  
		int num1,num2,temp;               
		num1=nume;  
		num2=deno;  
		c=nume;  
		d=deno;  
		if(num1>num2) 
		{
			{  
				temp=num1;
				num1=num2;
				num2=temp;   
			}  
			a=num1; 
			b=num2;  
			while(b!=0) 
			{  
				temp=a%b;  
				a=b;  
				b=temp;  
			}  
			c=c/a;  
			d=d/a;  
			cout<<"化简后为:"<<c<<"/"<<d<<endl; 
		}
		else  {
			cout<<"化简后为:"<<nume<<"/"<<deno<<endl;  
		}  
	}
	
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: