您的位置:首页 > 其它

第五周 22 分数类的雏形

2016-04-05 18:48 302 查看
/* 
*Copyright (c) 2015,烟台大学计算机学院 
*All rights reserved. 
*文件名称:text.cpp 
*作者:李德彪
*完成日期:2015年4月2日 
*版本号:v1.0 

*问题描述:设计一个简单的分数类,完成对分数的几个运算 
*输入描述:两个整数和一个字符 
*程序输出:输出三个分数 
*/  
#include <iostream>
  
#include<string>   
#include<iomanip>
  
using namespace std;  
int GCD(int n,int m);  
class CFraction  
{  
  
public:  
    CFraction(int nu=1,int de=1);  
   void set(int nu=1,int de=1);  
  
    void input();  
  
    void simplify();  
    void amplify(int n);  
    void output(int style=0);  
private:  
    int nume;  
    int deno;  
};  
CFraction::CFraction(int nu,int de):nume(nu),deno(de)  
{  
  
}  
void CFraction::set(int nu,int de)  
{  
    nume=nu;  
    deno=de;  
}  
void CFraction::input()  
{  
        char n;  
        cin>>nume;  
        cin>>n;  
        cin>>deno;  
    }  
void CFraction::simplify()  
{  
    int t;  
    t=GCD(nume,deno);  
    cout<<nume/t<<"/";  
    cout<<deno/t<<endl;  
  
}  
void CFraction::amplify(int n)  
{  
    int m;  
    m=GCD(nume,deno);  
    cout<<(nume/m)*n<<"/"<<deno/m<<endl;  
}  
void CFraction::output(int style)  
{  
    int m;  
    m=GCD(nume,deno);  
    if(style==0)  
    {  
        cout<<nume<<"/"<<deno<<endl;  
    }  
    else if(style==1)  
    {  
        cout<<nume/m<<"/"<<deno/m<<endl;  
    }  
    else if(style==2)  
    {  
        if(nume/deno==0)  
        cout<<nume<<"/"<<deno<<endl;  
        else  
        cout<<nume/deno<<"("<<nume%deno<<"/"<<deno<<")"<<endl;  
    }  
    else if(style==3)  
    {  
        cout<<setprecision(4)<<setiosflags(ios::fixed)<<static_cast<double>(nume)/static_cast<double>(deno)<<endl;  
    }  
}  
int GCD(int n,int m)  
{  
    if(m<=n)  
     {  
        if(n%m==0)  
        return(m);  
        else  
        return (GCD(m,n%m));  
     }  
    else  
        return(GCD(m,n));  
}  
  
int main()  
{  
    CFraction fenshu;  
    fenshu.amplify(3);  
    fenshu.set(18,8);  
    fenshu.simplify();  
    fenshu.input();  
    fenshu.output(3);  
    return 0;  
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: