第五周实验报告2

#include<iostream>   
  
using namespace std;  
  
class CFraction  
{  
private:  
      
    int nume;                           // 分子   
      
    int deno;                           // 分母   
      
public:  
      
    CFraction(int nu=0,int de=1);       //构造函数,初始化用   
      
    //  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(int style=0);           //输出:以8/6为例,style为0时,输出8/6;   
                                        
                                        //style为1时,输出4/3;   
                                       
                                        //style为2时,输出1(1/3),表示一又三分之一;   
                                       
                                        //不给出参数和非1、2,认为是方式0   
};  
  
CFraction::CFraction(int nu, int de)  
{  
    nume = nu;  
      
    deno = de;  
}  
  
//void CFraction::Set(int nu=0,int de=1)//不知道这个函数该怎么用···只好放弃它了T_T...   
//{}   
  
void CFraction::input()  
{  
    char ch;  
      
    cout<<"Input a fraction:";  
      
    cin>> nume >> ch >> deno;  
      
    if(deno == 0)  
    {  
        cout<< "分母不能为0!!!" << endl;  
          
        exit(1);  
    }  
      
}  
  
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::amplify(int n)  
{  
    nume = nume * n;  
}  
  
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;  
            }  
        }  
    }  
}  
  
int main()  
{  
    CFraction x(2, 3);  
      
    x.input();  
      
    x.output(0);  
      
    x.output(1);  
      
    x.output(2);  
      
    x.amplify(4);  
      
    cout<< "放大4倍后的";   
      
    x.output(0);  
      
    x.output(1);  
      
    x.output(2);  
  
    return 0;  
}  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值