补2

xiaoxiao2021-02-28  96

1.问题及代码

文件名称:分数类      者:钟奕   完成日期:2017    5 月 6     版 本 号:v1.0  对任务及求解方法的描述部分: 输入描述:输入一个分数3/8 问题描述:对一个分数的几种简单运算 程序输出:   问题分析:  算法设计:进行函数的构照

#include<iostream>  

#include<Cmath>   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);      };      CFraction::CFraction(int nu,int de) //构造函数,初始化用   {       if (de!=0)       {           nume=nu;           deno=de;       }       else       {           cerr<<"初始化中发生错误,程序退出\n";           system("pause");           exit(0);       }   }      void CFraction::set(int nu,int de)    //置值,改变值时用   {       if (de!=0) //如果不合适,改变值操作无效       {           nume=nu;           deno=de;       }   }      void CFraction::input() //按照"nu/de"的格式,如"5/2"的形式输入   {       int nu,de;       char c;       while(1)       {           cout<<"输入分数(m/n): ";           cin>>nu>>c>>de;           if(c!='/')               cout<<"输入格式错误!\n ";           else if (de==0)               cout<<"分母不能为零!\n ";           else               break;       }          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)  //放大n倍,如2/3放大5倍为10/3   {       nume*=n;   }   //输出分数:以/6为例   //style为0时,原样输出8/6;   //style为1时,输出化简后形式4/3;   //style为2时,输出1(1/3)形式,表示一又三分之一;   //style为3时,用小数形式输出,如1.3333;   void CFraction::output(int style)   {       int n;       switch(style)       {       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
转载请注明原文地址: https://www.6miu.com/read-75202.html

最新回复(0)