第九周實驗報告三

來源:互聯網
上載者:User

/* (程式頭部注釋開始)
* 程式的著作權和版本聲明部分
* Copyright (c) 2011, 煙台大學電腦學院學生 
* All rights reserved.
* 檔案名稱:                              
* 作    者:鮑增凱                           
* 完成日期:     2012    年    5  月    7  日

* 版 本 號:

01.#include<iostream.h>   02.  03.//using namespace std;   04.  05.class CFraction  06.{  07.private:  08.      09.    int nume;                            // 分子   10.      11.    int deno;                            // 分母   12.      13.public:  14.      15.    CFraction(int nu=0,int de=1);        //建構函式,初始化用   16.      17.    void Simplify();                     //化簡(使分子分母沒有公因子)   18.      19.    friend istream& operator >> (istream&, CFraction &);  20.      21.    friend ostream& operator << (ostream&, CFraction &);  22.      23.    CFraction operator +(CFraction &c);  //聲明重載運算子 + 的函數   24.      25.    CFraction operator -(CFraction &c);  //聲明重載運算子 + 的函數   26.      27.    CFraction operator *(CFraction &c);  //聲明重載運算子 + 的函數   28.      29.    CFraction operator /(CFraction &c);  //聲明重載運算子 + 的函數   30.      31.    bool operator > (CFraction &c);  32.      33.    bool operator < (CFraction &c);  34.      35.    bool operator >= (CFraction &c);  36.      37.    bool operator <= (CFraction &c);  38.      39.    bool operator == (CFraction &c);  40.      41.    bool operator != (CFraction &c);      42.};  43.  44.CFraction::CFraction(int nu, int de)  45.{  46.    nume = nu;  47.      48.    deno = de;  49.}  50.  51.istream& operator >> (istream& input, CFraction &c)  52.{  53.    char f;  54.      55.    while(1)  56.    {  57.        cout << "請依次輸入要操作的分數的分子和分母(用“/”隔開):";  58.          59.        input >> c.nume >> f >> c.deno;  60.          61.        if(f != '/')  62.            cout << "輸入格式有誤!!!" << endl;  63.          64.        else  65.            break;  66.    }  67.    return input;  68.}  69.  70.ostream& operator << (ostream& output, CFraction &c)  71.{  72.    output << c.nume << "/" << c.deno << endl;  73.      74.    c.Simplify();  75.      76.    if( c.nume %  c.deno == 0)  77.        output << "化到最簡後的分數為:" << c.nume /  c.deno << endl;  78.      79.    else  80.        output << "化到最簡後的分數為:" << c.nume << '/' <<  c.deno << endl;  81.      82.    int n;  83.      84.    output << "化到真分數的分數為:";  85.      86.    if( c.nume %  c.deno == 0)  87.        output<<  c.nume /  c.deno << endl;  88.      89.    else  90.    {  91.        if( c.nume <  c.deno)  92.            output<<  c.nume << '/' <<  c.deno << endl;  93.          94.        else  95.        {  96.            n =  c.nume /  c.deno;  97.              98.            output<< n << "(" << c.nume - n *  c.deno << '/' <<  c.deno <<")"<<endl;  99.        }  100.    }  101.      102.    return output;  103.}  104.  105.void CFraction::Simplify()               //化簡(使分子分母沒有公因子)   106.{  107.    int i, a;  108.      109.    if(nume > deno)  110.    {  111.        a = nume;  112.    }  113.    else  114.    {  115.        a = deno;  116.    }  117.      118.    for(i = a; i > 1; -- i)  119.    {  120.          121.        if(nume % i == 0 && deno % i == 0)  122.        {  123.            nume = nume / i;  124.              125.            deno = deno / i;  126.        }  127.    }  128.}  129.  130.CFraction CFraction::operator +(CFraction &c)  131.{  132.    return CFraction (nume * c.deno + deno * c.nume, deno * c.deno);  133.}  134.  135.CFraction CFraction::operator -(CFraction &c)  136.{  137.    return CFraction (nume * c.deno - deno * c.nume, deno * c.deno);  138.}  139.  140.CFraction CFraction::operator *(CFraction &c)  141.{  142.    return CFraction (nume * c.nume, deno * c.deno);  143.}  144.  145.CFraction CFraction::operator /(CFraction &c)  146.{  147.    return CFraction (nume * c.deno, deno  * c.nume);  148.}  149.  150.bool CFraction::operator > (CFraction &c)  151.{  152.    if(deno > c.deno)  153.    {  154.        return false;  155.    }  156.      157.    if(deno < c.deno)  158.    {  159.        return true;  160.    }  161.    if(deno == c.deno)  162.    {  163.        if(nume > c.nume)  164.            return true;  165.          166.        else  167.            return false;     168.    }  169.}  170.  171.bool CFraction::operator < (CFraction &c)  172.{  173.    if(deno > c.deno)  174.    {  175.        return true;  176.    }  177.      178.    if(deno < c.deno)  179.    {  180.        return false;  181.    }  182.    if(deno == c.deno)  183.    {  184.        if(nume < c.nume)  185.            return true;  186.          187.        else  188.            return false;  189.    }  190.}  191.  192.bool CFraction::operator >= (CFraction &c)  193.{  194.    if(*this < c)  195.        return false;  196.      197.    else  198.        return true;  199.}  200.  201.bool CFraction::operator <= (CFraction &c)  202.{     203.    if(*this > c)  204.        return false;  205.      206.    else  207.        return true;  208.}  209.  210.bool CFraction::operator == (CFraction &c)  211.{  212.    if(nume == c.nume && deno == c.deno)  213.        return true;  214.      215.    else  216.        return false;  217.}  218.  219.bool CFraction::operator != (CFraction &c)  220.{  221.    if(nume == c.nume && deno == c.deno)  222.        return false;  223.      224.    else  225.        return true;  226.}  227.  228.int main()  229.{  230.    CFraction c1, c2, c3;  231.      232.    cout << "1.實現兩個分數的相加" << endl;  233.      234.    cin >> c1;  235.      236.    cout << "c1 = " << c1;  237.      238.    cin >> c2;  239.      240.    cout << "c2 = " << c2;  241.      242.    c3 = c1 + c2;  243.      244.    cout << "c1 + c2 = " << c3 ;  245.      246.    cout << "2.實現兩個分數的相減" << endl;  247.      248.    CFraction c5, c6, c7;  249.      250.    cin >> c5;  251.      252.    cout << "c5 = " << c5;  253.      254.    cin >> c6;  255.      256.    cout << "c6 = " << c6;  257.      258.    c7 = c5 - c6;  259.      260.    cout << "c5 - c6 = " << c7;  261.      262.    cout << "3.實現兩個分數的相乘" << endl;  263.      264.    CFraction c8, c9, c10;  265.      266.    cin >> c8;  267.      268.    cout << "c8 = " << c8;  269.      270.    cin >> c9;  271.      272.    cout << "c9 = " << c9;  273.      274.    c10 = c8 * c9;  275.      276.    cout << "c8 * c9 = " << c10;  277.      278.    cout << "4.實現兩個分數的相除" << endl;  279.      280.    CFraction c11, c12, c13;  281.      282.    cin >> c11;  283.      284.    cout << "c11 = " << c11;  285.      286.    cin >> c12;  287.      288.    cout << "c12 = " << c12;  289.      290.    c13 = c11 / c12;  291.      292.    cout << "c11 / c12 = " << c13;  293.      294.    cout << "5.實現兩個分數大於的比較" << endl;  295.      296.    CFraction c14, c15;  297.      298.    cin >> c14;  299.      300.    cout << "c14 = " << c14;  301.      302.    cin >> c15;  303.      304.    cout << "c15 = " << c15;  305.      306.    cout << "c14 > c15" << (c14.operator >(c15)?" 成立":" 不成立") << endl;  307.      308.    cout << "6.實現兩個分數小於的比較" << endl;  309.      310.    CFraction c16, c17;  311.      312.    cin >> c16;  313.      314.    cout << "c16 = " << c16;  315.      316.    cin >> c17;  317.      318.    cout << "c17 = " << c17;  319.      320.    cout << "c16 < c17" << (c16.operator <(c17)?" 成立":" 不成立") << endl;  321.      322.    cout << "7.實現兩個分數大於等於的比較" << endl;  323.      324.    CFraction c18, c19;  325.      326.    cin >> c18;  327.      328.    cout << "c18 = " << c18;  329.      330.    cin >> c19;  331.      332.    cout << "c19 = " << c19;  333.      334.    cout << "c18 >= c19" << (c18.operator >=(c19)?" 成立":" 不成立") << endl;  335.      336.    cout << "87.實現兩個分數小於等於的比較" << endl;  337.      338.    CFraction c20, c21;  339.      340.    cin >> c20;  341.      342.    cout << "c20 = " << c20;  343.      344.    cin >> c21;  345.      346.    cout << "c21 = " << c21;  347.      348.    cout << "c20 <= c21" << (c20.operator <=(c21)?" 成立":" 不成立") << endl;  349.      350.    cout << "9.實現兩個分數等於的比較" << endl;  351.      352.    CFraction c22, c23;  353.      354.    cin >> c22;  355.      356.    cout << "c22 = " << c22;  357.      358.    cin >> c23;  359.      360.    cout << "c23 = " << c23;   361.      362.    cout << "c22 == c23" << (c22.operator ==(c23)?" 成立":" 不成立") << endl;  363.      364.    cout << "7.實現兩個分數不等於的比較" << endl;  365.      366.    CFraction c24, c25;  367.      368.    cin >> c24;  369.      370.    cout << "c24 = " << c24;  371.      372.    cin >> c25;  373.      374.    cout << "c25 = " << c25;  375.      376.    cout << "c24 != c25" << (c24.operator !=(c25)?" 成立":" 不成立") << endl;  377.      378.    //  system("pause");   379.      380.    return 0;  381.}  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.