第五周实验报告(二)

来源:互联网 发布:防辐射服有没有用 知乎 编辑:程序博客网 时间:2024/06/05 15:10
01.#include <iostream>  02.  03.using namespace std;  04.class CFraction  05.{private:  06.    int nume;  // 分子  07.    int deno;  // 分母  08.    char c;  09. public:  10.       11.    CFraction(int nu=0,int de=1);   //构造函数,初始化用  12.    void Set(int nu=0,int de=1);    //置值,改变值时用  13.    void input();               //按照"nu/de"的格式,如"5/2"的形式输入  14.    void Simplify();            //化简(使分子分母没有公因子)  15.    void amplify(int n);            //放大n倍,如2/3放大5倍为10/3  16.    void output(int style=0);       //输出:以8/6为例,style为0时,输出8/6;  17.                            //style为1时,输出4/3;  18.                            //style为2时,输出1(1/3),表示一又三分之一;  19.                            //不给出参数和非1、2,认为是方式0  20.};  21.CFraction::CFraction(int nu,int de)  22.{  23.    nume = nu;  24.    deno = de ;  25.}  26.void CFraction::input()                        //按照"nu/de"的格式,如"5/2"的形式输入  27.{  28.    cout << "请输入数值: (nu/de)" << endl;  29.    cin>>nume>>c>> deno;  30.  31.    while(c != '/')  32.    {  33.        cout << " 格式错误,请重新输入:" << endl;  34.        cin >> nume >> c >> deno;  35.    }  36.}  37.  38.void CFraction::Simplify()                     //化简(使分子分母没有公因子)  39.{  40.    int i,x,m;  41.  42.    x = nume < deno ? nume : deno;  43.  44.    for(i = 2 ; i <= x ; i ++)  45.    {  46.        if( nume % i == 0 && deno % i == 0 )  47.        {  48.            nume = nume / i;  49.            deno = deno / i;  50.            i = 1;  51.        }  52.    }  53.      54.      55.}  56.  57.void CFraction::amplify(int n)                //放大n倍,如2/3放大5倍为10/3  58.{  59.    nume = nume * n;  60.  61.    cout << nume << "/" << deno << endl;  62.}  63.  64.void CFraction::output(int style)                          //输出:以8/6为例,style为0时,输出8/6;style为1时,输出4/3;style为2时,输出1(1/3),表示一又三分之一;不给出参数和非1、2,认为是方式0  65.{  66.    int m;  67.  68.    switch(style)  69.    {  70.    case 0: if(nume % deno == 0)  71.               cout << nume / deno << endl;  72.            else  73.                cout << nume << "/" << deno << endl;   74.            break;  75.          76.    case 1: Simplify();  77.            if(nume % deno == 0)  78.                cout << nume / deno << endl;  79.            else  80.                cout << nume << "/" << deno << endl;  81.             break;  82.    case 2:if(nume % deno == 0)  83.               cout << nume / deno << endl;  84.           else  85.           {  86.               m = nume / deno;  87.               cout << m << "(" << nume % deno << "/" << deno << ")" << endl;  88.               break;  89.           }  90.    }  91.}  92.int main()  93.{  94.    int n;  95.  96.    CFraction num1,num2;  97.    num1.input();  98.  99.    cout << " 化简得" << endl;  100.  101.    num1.Simplify();  102.  103.    cout << " 增加2倍" << endl;  104.  105.    num1.amplify(2);  106.  107.    cout << "请选择...." << "0    1    2" << endl;  108.  109.    cin >> n;  110.  111.    num1.output(n);  112.  113.    system("pause");  114.  115.    return 0;  116.}  117.  118.  119.