第六周项目一-分数类的雏形(2)

来源:互联网 发布:php自助建站系统源码 编辑:程序博客网 时间:2024/05/17 07:04
 /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作    者:王蕊 *完成日期:2016年4月3日 *版 本 号:v1.0 * *问题描述:先构造函数和输出output函数(可以先只实现一种输出方式),再set函数,再input函数,等等。 *输入描述:无。 *程序输出:无。*/  #include<iostream>#include<Cmath>#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);    void set(int nu=0,int de=1);    void input();    void simplify();    void amplify(int n);    void output(int style=0);};CFraction::CFraction(int nu,int de){    if (de!=0)    {        nume=nu;        deno=de;    }    else    {        cerr<<"初始化中发生错误,程序退出\n";        exit(0);    }}void CFraction::set(int nu,int de){    if (de!=0)    {        nume=nu;        deno=de;    }}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;}int gcd(int m, int n){    int r;    if (m==0)    {        return n;    }    while(r=m%n)    {        m=n;        n=r;    }    return n;}void CFraction::amplify(int n){    nume*=n;}void CFraction::output(int style){    int n=gcd(nume,deno);    switch(style)    {    case 0:        cout<<"初始:" <<nume<<'/'<<deno<<endl;        break;    case 1:        cout<<"化简: "<<nume/n<<'/'<<deno/n<<endl;        break;    case 2:        cout<<"分数:" <<nume/deno<<'('<<(nume/n)%(deno/n)<<'/'<<deno/n<<')'<<endl;        break;    case 3:        cout<<"近似值:" <<nume/double(deno)<<endl;        break;    default:        cout<<"默认:" <<nume<<'/'<<deno<<endl;    }}int main(){    CFraction c1,c2(8,6);    c1.output(0);    cout<<"改变c1: "<<endl;    c1.set(2,7);    c1.output();    cout<<"输入c1: "<<endl;    c1.input();    c1.output(0);    c2.output(0);    c2.output(1);    c2.output(2);    c2.output(3);    c2.output();    cout<<"化简c2: "<<endl;    c2.simplify();    c2.output(0);    cout<<"放大c2: "<<endl;    c2.amplify(5);    c2.output(0);    c2.output(1);    return 0;}

运行结果:


0 0
原创粉丝点击