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

来源:互联网 发布:苹果手机免费小说软件 编辑:程序博客网 时间:2024/05/17 07:38
问题及代码:/* *Copyright (c) 2015,烟台大学计算机学院*All rights reserved.*文件名称:test.cop*作者:*完成日期:2015年3月31日*版本号:v1.0**问题描述: *输入描述:*输出描述:
<pre name="code" class="html">#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();//按照"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 c1;    c1.set();    c1.input();    c1.output(0);    c1.output(1);    c1.output(2);    c1.output(3);    return 0;}CFraction::CFraction(int nu,int de){    if(de!=0)    {        nume=nu;        deno=de;    }    else        {cout<<"初始化错误,程序退出"<<endl;    exit(0);        }}void CFraction::set(int nu,int de){    nume=nu;    deno=de;}void CFraction::input(){    int nu,de;    char a;    cout<<"请输入分数"<<endl;    cin>>nu>>a>>de;    if(a!='/')       {       cout<<"输入格式错误,请从新输入"<<endl;       input();       }       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){    nume*=n;}void CFraction::output(int style){    switch(style)    {     int n;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;    }}

运行结果:
<img src="http://img.blog.csdn.net/20150331132351040?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG91eGluaGFuZzEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

0 0