第六周 项目一 分数类的雏形

问题及代码:

/*

*Copyright(c) 2016.烟台大学计算机与控制工程学院

*ALL rights  reserved.

*文件名称:main.cpp

*作者:郝昱猛

*完成日期:2016年4月7日

*问题描述: 本任务将设计一个简单的分数类,完成对分数的几个运算。

*/
#include<iostream>
using namespace std;
class CFraction
{
private:
    int nume;  // 分子
    int deno;  // 分母
    int snume; //简化后的分子
    int sdeno; //简化后的分子
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)形式,表示一又三分之一;
                            //style为3时,用小数形式输出,如1.3333;
                            //默认方式0
};
CFraction::CFraction(int nu,int de):nume(nu),deno(de){}
void CFraction::set(int nu,int de)
{
    nume=nu;
    deno=de;
}
void CFraction::input()
{
    char temp;
    cin>>nume>>temp>>deno;
}
void CFraction::simplify()
{
    int t;
    int nu=nume;
    int de=deno;
    while(nu%de)
    {
        t=nu%de;
        nu=de;
        de=t;
    }
    snume=nume/de;
    sdeno=deno/de;
}
void CFraction::amplify(int n)
{
    nume*=n;
    deno*=n;
}

void CFraction::output(int style)
{
    if(style==0)
        cout<<nume<<"/"<<deno<<endl;
    else if(style==1)
        cout<<snume<<"/"<<sdeno<<endl;
    else if(style==2)
    {
        if((float)snume/(float)sdeno<1.0)
             cout<<snume<<"/"<<sdeno<<endl;
        else if((float)snume/(float)sdeno==1.0)
            cout<<snume/sdeno<<endl;
        else
             cout<<snume/sdeno<<"("<<snume%sdeno<<"/"<<sdeno<<")"<<endl;
    }
    else
        cout<<(float)nume/(float)deno<<endl;
}
int main()
{
   CFraction d(8,6);
   d.simplify(); //化简
   d.output(0);
   d.output(1);
   d.output(2);
   d.output(3);
   d.amplify(2); //放大n倍
   d.output(0);
   d.set(5,2);
   d.output(0);
   d.output(1);
   d.output(2);
   d.output(3);
   d.input();
   d.output(0);
   d.output(1);
   d.output(2);
   d.output(3);
   return 0;
}


运行结果:

第六周 项目一 分数类的雏形_第1张图片

你可能感兴趣的:(第六周 项目一 分数类的雏形)