第六周项目1—分数类的雏形

来源:互联网 发布:医疗器械软件描述 编辑:程序博客网 时间:2024/05/17 06:54
/*  *Copyright(c) 2016.烟台大学计算机与控制工程学院  *ALL rights  reserved.  *文件名称:my.cpp  *作者:张瀚文  *完成日期:2016年4月11日  *问题描述: 本任务将设计一个简单的分数类,完成对分数的几个运算。  */  #include <iostream>using namespace std;class CFraction{private :    int nunme;//分子    int deno;//分母public:    CFraction(int nu=0,int de=1)//构造函数,初始化用        {            nunme=nu;            deno=de;        }    void set (int nu=0,int de=1)//置值,改编值时用   {            nunme=nu;            deno=de;    }     int  gcd(int ,int );    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};void CFraction::input(){  char a; int nu,de; while(1)    {      cin>>nu>>a>>de;    if(a!='\/')        cout<<"输入格式不正确,请重新输入"<<endl;    else    {        set(nu,de);    break;    }    }}void CFraction::simplify(){    int nun=nunme,den=deno;    nun/=gcd(nun,den);    den/=gcd(nun,den);    if(den==nun||den==1)    cout<<nun<<endl;    else    cout<<nun<<"/"<<den;} int  CFraction::gcd(int x,int y) {     if(x%y==0)        return y;     gcd(y,x%y); } void CFraction::amplify(int n) {     cout<<"请输入扩大倍数:"<<endl;     cin>>n;     int den=deno,nun=nunme;     den*=n;     nun*=n;     cout<<"扩大后:"<<nun<<"/"<<den<<endl; } void CFraction::output(int style) {  int den=deno,nun=nunme;     if(style==0)  cout<<nun<<"/"<<den;     else if(style==1) simplify();     else if(style==2) {cout<<nun/den<<"("<<nun-den*(nun/den)<<"/"<<den;cout<<")"<<endl;}     else if(style==3) cout<<1.0*nun/den;     else cout<<"格式错误"; }int main(){    int n; CFraction num; cout<<"请输入分数(5/2)";  num.input();   num.amplify(n);  cout<<"选择输出格式:"<<endl;  cout<<"1:输出化简后形式 "<<endl;  cout<<"2: 输出假分数形式 "<<endl;  cout<<"3: 输出小数形式"<<endl;  cout<<"0: 默认格式输出"<<endl;  cin>>n;  num.output(n);    return 0;}<img src="http://img.blog.csdn.net/20160411202737851" alt="" />

    // 做的还是不行  勉强过关吧  步骤太烦



0 0