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

/* 
 
*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="" />

第六周项目1—分数类的雏形_第1张图片第六周项目1—分数类的雏形_第2张图片

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



你可能感兴趣的:(第六周项目1—分数类的雏形)