第四周项目二

来源:互联网 发布:糖糖淘宝客怎么样 编辑:程序博客网 时间:2024/05/16 08:58
#include <iostream>#include<cstdlib>using namespace std;int gcd(int m, int n);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 amplify(int n);//放大n倍,如2/3放大5倍为10/3//输出:以8/6为例,style为0时,原样输出8/6;//style为1时,输出化简后形式4/3;//style为2时,输出1(1/3)形式,表示一又三分之一;//style为3时,用小数形式输出,如1.3333;//默认方式0    void output(int style=0);};void CFraction::set(int nu,int de){    if(de!=0)    {        nume=nu;        deno=de;    }     else    {        cerr<<"初始化中发生错误,程序退出\n";        exit(0);    }}void CFraction::input(){    int nu,de;    char c;    while(1)    {        cout<<"输入分数(m/n): ";        cin>>nu>>c>>de;        if(c!='/')            cout<<"输入格式错误!\n ";        else if (de==0)            cout<<"分母不能为零!\n ";        else            break;    }    nume=nu;    deno=de;}void CFraction::simplify(){    int n=gcd(deno, nume);    deno/=n;     // 化简    nume/=n;}// 求m,n的最大公约数int gcd(int m, int n) //这个函数可以定义为类的成员函数,也可以为一般函数{    int r;    if (m<n)    {        r=m;        m=n;        n=r;    }    while(r=m%n)  // 求m,n的最大公约数    {        m=n;        n=r;    }    return n;}void CFraction::amplify(int n)  //放大n倍,如2/3放大5倍为10/3{    nume*=n;}//输出分数:以/6为例//style为0时,原样输出8/6;//style为1时,输出化简后形式4/3;//style为2时,输出1(1/3)形式,表示一又三分之一;//style为3时,用小数形式输出,如1.3333;void CFraction::output(int style){    int n;    switch(style)    {    case 0:        cout<<"原样:" <<nume<<'/'<<deno<<endl;        break;    case 1:        n=gcd(deno, nume);        cout<<"化简形式: "<<nume/n<<'/'<<deno/n<<endl;     //输出化简形式,并不是要化简        break;    case 2:        cout<<"带分数形式:" <<nume/deno<<'('<<nume%deno<<'/'<<deno<<')'<<endl;        break;    case 3:       cout<<"近似值:" <<nume/double(deno)<<endl;        break;    default:        cout<<"默认原样:" <<nume<<'/'<<deno<<endl;    }}int main(){    CFraction c1,c2(8,6);    cout<<"关于c1: "<<endl;    c1.output(0);    cout<<"改变c1: "<<endl;   //测试set函数    c1.set(2,7);    c1.output();    cout<<"输入c1: "<<endl;//测试input函数    c1.input();    c1.output(0);    cout<<"关于c2: "<<endl;//测试output函数    c2.output(0);    c2.output(1);    c2.output(3);    c2.output(3);    c2.output();    cout<<"将c2化简: "<<endl;//测试simplify函数    c2.simplify();    c2.output(0);    cout<<"将c2放大倍: "<<endl;//测试amplify函数    c2.amplify(5);    c2.output(0);    c2.output(1);    return 0;}

0 0
原创粉丝点击