第八周任务(二)

来源:互联网 发布:淘宝卖家开通订单险 编辑:程序博客网 时间:2024/05/16 00:57
[cpp] view plaincopy01./* (程序头部注释开始) 02.* 程序的版权和版本声明部分 03.* Copyright (c) 2011, 烟台大学计算机学院学生  04.* All rights reserved. 05.* 文件名称:renwu.cpp                               06.* 作    者:苗向前                              07.* 完成日期:2012 年 4 月 11 日 08.* 版 本 号:8.2          09.* 对任务及求解方法的描述部分 10.* 输入描述:略  11.* 问题描述:略  12.* 程序输出:略 13.* 程序头部的注释结束 14.*/  15.#include <iostream>    16.using namespace std;    17.  18.class CTime    19.    {    20.    private:    21.        unsigned short int hour;    // 时    22.        unsigned short int minute;  // 分    23.        unsigned short int second;  // 秒    24.    public:    25.        CTime(int h=0,int m=0,int s=0);    26.        void setTime(int h,int m,int s);    27.        void display();    28.        //比较运算符(二目)的重载    29.        bool operator > (CTime &t);    30.        bool operator < (CTime &t);    31.        bool operator >= (CTime &t);    32.        bool operator <= (CTime &t);    33.        bool operator == (CTime &t);    34.        bool operator != (CTime &t);    35.        //二目运算符的重载    36.        CTime operator+(CTime &c);  //返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15       37.        CTime operator-(CTime &c);//对照+理解    38.        CTime operator+(int s);//返回s秒后的时间    39.        CTime operator-(int s);//返回s秒前的时间    40.        //一目运算符的重载    41.        CTime operator++(int);//后置++,下一秒    42.        CTime operator++();//前置++,下一秒    43.        CTime operator--(int);//后置--,前一秒    44.        CTime operator--();//前置--,前一秒    45.        //赋值运算符的重载         46.        CTime operator+=(CTime &c);    47.        CTime operator-=(CTime &c);    48.        CTime operator+=(int s);//返回s秒后的时间    49.        CTime operator-=(int s);//返回s秒前的时间    50.    };    51.  52.CTime::CTime(int h,int m,int s)    53.    {    54.    hour=h;    55.    minute=m;    56.    second=s;    57.    }  58.  59.void CTime::setTime(int h,int m,int s)    60.    {    61.    hour=h;    62.    minute=m;    63.    second=s;    64.    }    65.  66.void CTime::display()    67.    {    68.    cout<<hour<<":"<<minute<<":"<<second<<endl;      69.    }    70.//下面实现所有的运算符重载代码。    71.//为简化编程,请注意通过调用已有函数,利用好各函数之间的关系    72.bool CTime::operator > (CTime &t)    73.    {    74.    if(hour>t.hour)    75.        return true;    76.    else if(hour<t.hour)    77.        return false;    78.    else if(minute>t.minute)    79.        return true;    80.    else if(minute<t.minute)    81.        return false;    82.    else if(second>t.second)    83.        return true;    84.    else if(second<t.second)    85.        return false;  86.    else  87.        return false;    88.    }   89.  90.bool CTime::operator < (CTime &t)    91.    {    92.    if(hour<t.hour)    93.        return true;    94.    else if(hour>t.hour)    95.        return false;    96.    else if(minute<t.minute)    97.        return true;    98.    else if(minute>t.minute)    99.        return false;    100.    else if(second<t.second)    101.        return true;    102.    else if(second>t.second)    103.        return false;   104.    else  105.        return false;    106.    }    107.  108.bool CTime::operator >= (CTime &t)    109.    {    110.    CTime t1;    111.    t1.hour=hour;    112.    t1.minute=minute;    113.    t1.second=second;    114.    if (t1<t)    115.        return false;    116.    return true;    117.    }    118.  119.bool CTime::operator <= (CTime &t)    120.    {    121.    CTime t1;    122.    t1.hour =hour;    123.    t1.minute =minute ;    124.    t1.second =second ;    125.    if (t1>t)    126.        return false;    127.    return true;    128.    }   129.  130.bool CTime::operator == (CTime &t)    131.    {    132.    CTime t1;    133.    t1.hour=hour;    134.    t1.minute=minute;  135.    t1.second=second;    136.    if (t1>t||t1<t)    137.        return false;    138.    else  139.        return true;    140.    }    141.  142.bool CTime::operator != (CTime &t)    143.    {    144.    CTime t1;    145.    t1.hour=hour;    146.    t1.minute=minute;    147.    t1.second=second;    148.    if(t1==t)    149.        return false;  150.    else  151.        return true;    152.    }    153.  154.CTime CTime::operator+(CTime &c)   155.    {    156.    CTime t;    157.    t.hour=hour+c.hour;    158.    t.minute=minute+c.minute;    159.    t.second=second+c.second;    160.    if (t.second>59)    161.        {      162.        t.minute=(t.minute+t.second/60);      163.        if (t.minute>59)          164.            {      165.            t.hour=(t.hour+t.minute/60);      166.            if (t.hour>23)      167.                t.hour=(t.hour%24);        168.            t.minute=(t.minute%60);      169.            }    170.        t.second=(t.second%60);                 171.        }      172.    if (t.minute>59)          173.        {      174.        t.hour=(t.hour+t.minute/60);      175.        if (t.hour>23)      176.            t.hour=(t.hour%24);     177.        t.minute=(t.minute%60);      178.        }    179.    if (t.hour>23)      180.        t.hour=(t.hour%24);        181.    return t;    182.    }    183.  184.CTime CTime::operator-(CTime &c)  185.    {    186.    CTime t;    187.    unsigned short int k,h;    188.    t.hour=hour;    189.    t.minute=minute;    190.    t.second=second;    191.    if(second<c.second)    192.        {    193.        k=(-(second-c.second))%60;    194.        h=(-(second-c.second))/60;    195.        t.second=(60-k);            196.        t.minute=(minute-h-1);                 197.        if(t.minute<0)    198.            {    199.            t.minute=(-t.minute);    200.            k=t.minute%60;    201.            h=t.minute/60;    202.            t.hour=t.hour-h-1;     203.            t.minute=(60-k);    204.            if(t.hour<0)    205.                {    206.                t.hour=(-t.hour);    207.                t.hour=(t.hour%24);    208.                }    209.            }    210.        }    211.    else     212.        {    213.        t.second =second-c.second ;    214.        }    215.    if(t.minute<c.minute )    216.        {    217.        h=(-(t.minute -c.minute ))%60;    218.        k=(-(t.minute -c.minute ))/60;    219.        t.minute =(60-k);    220.        t.hour=(t.hour-1-h);                     221.        if(t.hour<0)    222.            {    223.            t.hour =(-t.hour );    224.            t.hour =(t.hour %24);    225.            }    226.        }    227.    else    228.        {    229.        t.minute =(t.minute-c.minute );    230.        }    231.    if(t.hour<c.hour )    232.        {    233.        t.hour =(-(t.hour -c.hour ))%24;    234.        }    235.    else    236.        {    237.        t.hour=(t.hour -c.hour );    238.        }    239.    return t;    240.    }  241.  242.CTime CTime::operator+(int s)  243.    {    244.    CTime t;    245.    t.hour =hour;    246.    t.minute =minute ;    247.    t.second =second ;    248.    t.second =(t.second +s);    249.    if (t.second >59)        250.        {      251.        t.minute+=t.second/60;      252.        if (t.minute>59)          253.            {      254.            t.hour+=t.minute/60;      255.            if (t.hour>23)      256.                t.hour%=24;        257.            t.minute%=60;      258.            }    259.        t.second%=60;                  260.        }      261.    else if (t.minute>59)          262.        {      263.        t.hour+=t.minute/60;      264.        if (t.hour>23)      265.            t.hour%=24;     266.        t.minute%=60;      267.        }    268.    else  if (t.hour>23)      269.        t.hour%=24;         270.    return t;    271.    }    272.  273.CTime CTime::operator-(int s)  274.    {    275.    CTime t;    276.    unsigned short int k,h;    277.    t.hour =hour;    278.    t.minute =minute ;    279.    t.second =second ;    280.    if(t.second <s)    281.        {    282.        k=(-(second-s) )%60;    283.        h=(-(second-s ))/60;    284.        t.second =(60-k);            285.        t.minute =(minute-h-1);                 286.        if(t.minute<0)    287.            {    288.            t.minute =(-t.minute );    289.            k=t.minute %60;    290.            h=t.minute /60;    291.            t.hour=t.hour-h-1;     292.            t.minute =(60-k);    293.            if(t.hour<0)    294.                {    295.                t.hour =(-t.hour );    296.                t.hour =(t.hour %24);    297.                }    298.            }    299.        }    300.    else     301.        {    302.        t.second =second-s;    303.        }    304.    return t;    305.    }    306.  307.CTime CTime::operator++(int)  308.    {    309.    CTime temp(*this);    310.    second++;    311.    if(second>=60)    312.        {     313.        second-=60;    314.        ++minute;    315.        }    316.    return temp;    317.    }   318.  319.CTime CTime::operator++()  320.    {    321.    if(++second>=60)    322.        {    323.        second-=60;    324.        ++minute;    325.        }    326.    return *this;    327.    }   328.  329.CTime CTime::operator--(int)  330.    {    331.    CTime temp(*this);    332.    second--;    333.    if(second<0)    334.        {     335.        second=59;    336.        --minute;    337.        }    338.    return temp;    339.    }    340.CTime CTime::operator--()  341.    {    342.    if(--second<0)    343.        {    344.        second=59;    345.        --minute;    346.        }    347.    return *this;    348.    }    349.  350.CTime CTime::operator+=(CTime &c)    351.    {    352.    CTime t1,t;    353.    t1.hour =hour;    354.    t1.minute =minute;    355.    t1.second =second;    356.    t=t1+c;    357.    hour=t.hour;    358.    minute=t.minute;    359.    second=t.second;    360.    return t;    361.    }    362.  363.CTime CTime::operator-=(CTime &c)    364.    {    365.    CTime t1,t;    366.    t1.hour=hour;    367.    t1.minute=minute;    368.    t1.second=second;    369.    t=t1-c;    370.    hour=t.hour;    371.    minute=t.minute;    372.    second=t.second;    373.    return t;         374.    }   375.  376.CTime CTime::operator+=(int s)  377.    {    378.    CTime t1,t;    379.    t1.hour=hour;    380.    t1.minute=minute;    381.    t1.second=second;    382.    t=t1+s;    383.    hour=t.hour;    384.    minute=t.minute;    385.    second=t.second;    386.    return t;    387.    }   388.  389.CTime CTime::operator-=(int s)   390.    {    391.    CTime t1,t;    392.    t1.hour=hour;    393.    t1.minute=minute;    394.    t1.second=second;    395.    t=t1-s;    396.    hour=t.hour;    397.    minute=t.minute;    398.    second=t.second;    399.    return t;    400.    }    401.  402.int main()    403.    {    404.    CTime t1(8,20,25),t2(11,20,50),t;    405.    int n;    406.    cout<<"t1为:";    407.    t1.display();    408.    cout<<"t2为:";    409.    t2.display();    410.    cout<<"下面比较两个时间大小:\n";    411.    if (t1>t2) cout<<"t1>t2"<<endl;    412.    if (t1<t2) cout<<"t1<t2"<<endl;    413.    if (t1==t2) cout<<"t1=t2"<<endl;     414.    if (t1!=t2) cout<<"t1≠t2"<<endl;    415.    if (t1>=t2) cout<<"t1≥t2"<<endl;    416.    if (t1<=t2) cout<<"t1≤t2"<<endl;  417.    cout<<endl;  418.    cout<<"t1+t2的时间为:";    419.    t=t1+t2;    420.    t.display();    421.    cout<<"t1-t2的时间为:";    422.    t=t1-t2;    423.    t.display();    424.    cout<<endl;    425.    t = t1 + t2;    426.    cout << "t1+t2 = ";    427.    t.display();      428.    t = t1++;    429.    cout << "t1++ = ";    430.    t.display();    431.    t = ++t1;    432.    cout << "++t1 = ";    433.    t.display();       434.    t = t1--;    435.    cout << "t1-- = ";    436.    t.display();    437.    t = --t1;    438.    cout << "--t1 = ";    439.    t.display();      440.    cout<<endl;    441.    system("pause");  442.    return 0;  443.    }    
 
运行结果: