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

来源:互联网 发布:键盘吉他软件 编辑:程序博客网 时间:2024/05/16 01:29

问题描述:

   完成分数类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。

代码:

#include <iostream>#include <cmath>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 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};int main(){    CFraction cf1(7,4);    cf1.output(1);    cf1.set(8,6);    cf1.simplify();    cf1.output();    cf1.amplify(7);    cf1.output(2);    cf1.input();    cf1.output(3);    return 0;}void CFraction::output(int s){    switch(s)    {    case 0:        cout<<nume<<"/"<<deno<<endl;        break;    case 1:        simplify();        cout<<nume<<"/"<<deno<<endl;        break;    case 2:        int i;        i=nume/deno;        nume=nume%deno;        cout<<i<<"("<<nume<<"/"<<deno<<")"<<endl;        break;    case 3:        double a;        a=double(nume)/double(deno) ;        cout<<a<<endl;        break;    }}void CFraction::simplify(){    int r,n,d;    n=nume;    d=deno;    while(d!=0)    {        r=n%d;        n=d;        d=r;    }    nume=nume/n;    deno=deno/n;}void CFraction::set(int nu,int de){    nume=nu;    deno=de;}void CFraction::amplify(int n){    nume=nume*n;}void CFraction::input(){    char a;    cout<<"输入分数:";    do    {        cin>>nume>>a>>deno;        if(a!='/')            cout<<"格式错误,重新输入:";    }    while(a!='/');}


 

运行结果:

0 0
原创粉丝点击