第四周项目2-分数类的雏形

来源:互联网 发布:js面向对象思想 编辑:程序博客网 时间:2024/04/30 05:51
/* *Copyright (c) 2014, 烟台大学计算机学院 *All rights reserved. *文件名称:week4-2.cpp *作者:高赞 *完成日期:2015年 3 月 30 日 *版本号:v1.0 * * */#include <iostream>#include <cstdlib>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)形式,表示一又三分之一;    //style为3时,用小数形式输出,如1.3333;    //默认方式0};CFraction::CFraction(int nu,int de){    if(de==0)    {        cout<<"初始化失败,分母不能为零。"<<endl;        exit(0);    }    else    {        nume=nu;        deno=de;    }}void CFraction::set(int nu,int de){    if(de==0)        cout<<"赋值失败,分母不能为零。"<<endl;    else    {        nume=nu;        deno=de;    }}void CFraction::input(){    char ch;    cin>>nume>>ch>>deno;    while(ch!='/')    {        cout<<"格式错误!重新输入"<<endl;        cin>>nume>>ch>>deno;    }}void CFraction::simplify(){    int a=nume,b=deno,c;    while (b!=0)    {        c=a%b;        a=b;        b=c;    }    nume=nume/a;    deno=deno/a;}void CFraction::amplify(int n){    nume*=n;    deno*=n;}void CFraction::output(int style){    switch(style)    {    case 0:        cout<<nume<<"/"<<deno<<endl;        break;    case 1:        simplify();        cout<<nume<<"/"<<deno<<endl;        break;    case 2:        simplify();        cout<<nume/deno<<"("<<nume%deno<<"/"<<deno<<")"<<endl;        break;    case 3:        cout<<(nume*1.0/deno)<<endl;        break;    }}int main(){    CFraction c1(1,3),c2(4,6),c3(1/2),c4;    c3.set(5,2);    cout<<"输入c4的值"<<endl;    c4.input();    c1.amplify(5);    cout<<"c1: ";    c1.output(0);    cout<<endl        <<"c2: ";    c2.output(1);    cout<<endl        <<"c3: ";    c3.output(2);    cout<<endl        <<"c4: ";    c4.output(3);    cout<<endl;    return 0;}


 

 

差点忘了实参是不能被赋值的... ...

0 0
原创粉丝点击