分数类

来源:互联网 发布:广州百度快照优化 编辑:程序博客网 时间:2024/05/01 04:33
/**Corpyright (c)2013,烟台大学计算机学院*All right reseved.*作者:张梦佳*完成日期:2014年3月30日*版本号:v1.0*输入描述:*问题描述:矩形累的初始化!*程序输出:*问题分析:*算法设计:*/#include <iostream>#include <cmath>#include <cstring>using namespace std;class CFraction{private:    int nume;  // 分子    int deno;  // 分母public:    CFraction(int nu=0,int de=1)    {        nume=nu;        deno=de;    }  //构造函数,初始化用    void set(int nu=0,int de=1);    //置值,改变值时用    void input(); //按照"nu/de"的格式,如"5/2"的形式输入    void simplify();//化简(使分子分母没有公因子)    void simplify1();    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};void CFraction::simplify1(){    int i=0;    if(nume>deno&&nume%deno!=0)    {        i=nume/deno-1;        cout<<i<<"("<<nume-deno*i<<"/"<<deno<<")"<<endl;    }    else if(nume<deno&&nume%deno!=0)    {        cout<<"("<<nume<<"/"<<deno<<")"<<endl;    }    else    {        cout<<nume/deno<<endl;    }}void CFraction::set(int nu,int de){    nume=nu;    deno=de;}void CFraction::input(){    int a,b;    string sss;    cout<<"请输入:"<<endl;    cin>>a>>sss>>b;    if(sss!="/")    {        input();    }    else    {        set(a,b);    }}void CFraction::simplify(){    int s,q;    if(nume>deno)    {        for(int i=deno;i>0;i--)        {            s=deno%i;            q=nume%i;            if(s==0&&q==0)                {                    cout<<"("<<nume/i<<"/"<<deno/i<<")"<<endl;                    break;                }        }    }    else    {        if(nume<deno)    {        for(int i=nume;i>0;i--)        {            s=deno%i;            q=nume%i;            if(s==0&&q==0)            {                 cout<<"("<<nume/i<<"/"<<deno/i<<")"<<endl;                 break;            }        }    }    }}void CFraction::amplify(int n){    nume=nume*n;    cout<<"("<<nume<<"/"<<deno<<")"<<endl;}void CFraction::output(int style){    if(style==0)    {        cout<<nume<<"/"<<deno<<endl;    }    else if(style==1)    {        simplify();    }    else if(style==2)    {       simplify1();    }    else    {        cout<<nume<<"/"<<deno<<endl;    }}int main(){    CFraction t1;    t1.input();    t1.output(0);    t1.output(1);    t1.output(2);    t1.output(3);    cout<<"请输入要乘的倍数!"<<endl;    int n;    cin>>n;    t1.amplify(n);    return  0;}


 

感悟

有类在手,天下我有!

0 0
原创粉丝点击