补二

来源:互联网 发布:电信4g首选网络类型 编辑:程序博客网 时间:2024/04/29 10:10

一、问题及代码

/*    文件名称:program2    作者:贺南鹏    完成时间:2017年5月8日 版本号:v1.0    对任务及求解方法的描述部分:    *输入描述:无     *程序输出:无   *问题分析:无    *算法设计:无 #include<iostream>  #include<cstdlib>  using namespace std;  class CFraction    {    private:        int nume;  // 分子        int deno;  // 分母    public:        CFraction(int nu=0,int de=1):nume(nu),deno(de){if(de==0)exit(0);};   //构造函数,初始化用        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 num1;      num1.output(0);      num1.set(8,5);      num1.output(0);      num1.output(1);      num1.output(2);      num1.output(3);      num1.set(15,25);      num1.output(0);      num1.output(1);      num1.output(2);      num1.output(3);      return 0;  }  void CFraction::set(int nu,int de) //置值,改变值时用  {      nume=nu;      deno=de;  }    void CFraction::input()               //按照"nu/de"的格式,如"5/2"的形式输入  {      int a,b;      char op;      cout<<"请输入数据:";      cin>>a>>op>>b;      if(op!='/')      {          cout<<"输入错误!"<<endl;          exit(0);      }      else      {          nume=a;          deno=b;      }  }    void CFraction::simplify()            //化简(使分子分母没有公因子)  {      int m,nu,de;      nu=nume;      de=deno;      while(m)      {          m=de%nu;          de=nu;          nu=m;      }      cout<<nume/de<<'/'<<deno/de<<endl;  }   void CFraction::amplify(int n)        //放大n倍,如2/3放大5倍为10/3  {      nume*=n;  }  void CFraction::output(int style)   //输出:以8/6为例,style为0时,原样输出8/6;style为1时,输出化简后形式4/3;                                //style为2时,输出1(1/3)形式,表示一又三分之一;                                //style为3时,用小数形式输出,如1.3333;                                //默认方式0    {      switch(style)      {      case 0:          cout<<nume<<'/'<<deno<<endl;break;      case 1:          simplify();break;      case 2:          if(nume/deno>0)          {              cout<<nume/deno<<'('<<nume%deno<<'/'<<deno<<')'<<endl;              break;          }          else          {              cout<<nume<<'/'<<deno<<endl;              break;          }      case 3:          cout<<0.1*nume/deno<<endl;break;      }  } 
二、运行结果:

0 0
原创粉丝点击