处理分数

*烟台大学计算机学院学生                                                                     
*All right reserved.                                                    
*文件名称*烟台大学计算机学院学生                                                                     
*All right reserved.                                                    
*文件名称:处理分数  
*作者:杨飞                                                                              
*完成日期:2013年3月23日                                                                   
*版本号:v1.0                                                                               
*对任务及求解方法的描述部分:处理分数  
*我的程序:

#include<iostream>   
#include<cstdlib>   
using namespace std;  
class CFraction  
{  
private:  
    int nume;  // 分子   
    int deno;  // 分母   
public:  
     
    void set(int nu=0,int de=1);    //置值,改变值时用   
    void input();    //按照"nu/de"的格式,如"5/2"的形式输入   
    void simplify();     //化简(使分子分母没有公因子)   
    void amplify(int n);     //放大n倍,如2/3放大5倍为10/3   
    void output();   //输出:以8/6为例,style为0时,原样输出8/6;
	void jia(int state=1);

   
};  
int main()
 {
   int num,m,d;
  CFraction t;
   t.input();
   while(1)  
    {   
        cout<<"请输入您的选择:"<<endl;  
        cout<<"1.原样输出.        2.化简后输出."<<endl;  
        cout<<"3.扩大N倍后输出.   4.以假分数(输入1),小数形式(输入2)输出"<<endl;  
        cout<<"0.退出."<<endl;  
		
       cin>>m;  
       switch(m)  
       {  
        case 0:  
            exit(0);  
        case 1:  
            t.output();  
            break;  
        case 2:  
            t.simplify();  
            t.output();  
            break;  
		case 3:  
            cout<<"请输入扩大倍数:"<<endl;  
            cin>>num;  
            t.amplify(num);  
            t.output();  
            break;  
        case 4: 
			cout<<"请重新输入1或2代表假分数和小数"<<endl;
			cin>>d;
			if(d==1)
		    t.jia(d); 
			else
			 t.jia(d);
             break;  
        
        default:  
		   cout<<"输入有误,请重新输入:"<<endl;  
           cin>>m;  
       }  
    }  
	    return 0;  
}

void CFraction::set(int nu,int de)
{
	nume=nu;
	deno=de;
	
}
void CFraction::input()
{
   cout<<"请输入分数(2/5)"<<endl;
	int a,b;
	char c;
	while(1)
	{
		cin>>a>>c>>b;
		if(c!='/')
		cout<<"输入有误,请重新输入:"<<endl;
		else 
		break; 
	}
	set(a,b);
}
void CFraction::simplify()
{
	int i;
	int p;
	if(nume>deno)
	p=deno;
	else
	p=nume;
	for(i=2;i<=p;i++)
	{
		if(nume%i==0&&deno%i==0)
		{
			nume/=i;
			deno/=i;
		}
	} 
	
}
void CFraction::amplify(int n)
{
	nume*=n;
}
void CFraction::output()
{
	cout<<"按照要求处理后"<<nume<<"/"<<deno<<endl;
}
void CFraction::jia(int state)
{   int num1;
	double a;
	if(state==1)
	{
		num1=nume/deno;
	nume=nume-num1*deno;
	cout<<"假分数是:"<<num1<<"("<<nume<<"/"<<deno<<")"<<endl;
	}
	if(state==2)
	{
		a=double(nume)/double(deno);
	cout<<nume<<"/"<<deno<<"变成小数是:"<<a<<endl;
	}
	
}


心得体会:无

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值