• 九周 项目2


    /*
    *程序的版权和版本号声明部分:
    *Copyright(c)2014。烟台大学计算机学院学生
    *All rights reserved.
    *文件名:
    *作者:赵加响
    *完毕日期:2014  年 4月22 日
    *版本号号:v1.0
    *对任务及求解方法的描写叙述部分:
    *输入描写叙述:无
    *问题描写叙述:
    *程序输出:
    *问题分析:
    *算法设计:
    */
    #include <iostream>
    using namespace std;
    class CTime
    {
    private:
        unsigned short int hour;    // 时
        unsigned short int minute;  // 分
        unsigned short int second;  // 秒
    public:
        CTime(int h=0,int m=0,int s=0);
        void setTime(int h,int m,int s);
        void display();
        //二目的比較运算符重载
        bool operator > (CTime &t);
        bool operator < (CTime &t);
        bool operator >= (CTime &t);
        bool operator <= (CTime &t);
        bool operator == (CTime &t);
        bool operator != (CTime &t);
        //二目的加减运算符的重载
        //返回t规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15
        CTime operator+(CTime &t);
        CTime operator-(CTime &t);//对比+理解
        CTime operator+(int s);//返回s秒后的时间
        CTime operator-(int s);//返回s秒前的时间
        //二目赋值运算符的重载
        CTime operator+=(CTime &c);
        CTime operator-=(CTime &c);
        CTime operator+=(int s);//返回s秒后的时间
        CTime operator-=(int s);//返回s秒前的时间
        //一目运算符的重载
    	CTime operator++(int);//后置++,下一秒
    	CTime operator++();//前置++,下一秒,前置与后置返回值不一样
    	CTime operator--( int);//后置--,前一秒
    	CTime operator--();//前置--。前一秒
    	friend ostream&operator<<(ostream&,CTime&);
    };
    //以下实现全部的运算符重载代码。
    
    CTime::CTime(int h,int m,int s)
    {
        hour=h;
        minute=m;
        second=s;
    }
    void CTime::setTime(int h,int m,int s)
    {
        hour=h;
        minute=m;
        second=s;
    }
    ostream&operator<<(ostream&output,CTime&t)
    {
        output<<t.hour<<":"<<t.minute<<":"<<t.second<<endl;
        return output;
    }
    CTime CTime::operator++(int)
    {
        CTime t=*this;
        second++;
        if(second>59)
        {
            second-=60;
            minute++;
        }
        if(minute>59)
        {
            minute-=60;
            hour++;
        }
        if(hour>=24)
        {
            hour-=24;
        }
        return t;
    }
    CTime CTime::operator++()
    {
        ++second;
        if(second>59)
        {
            second-=60;
            minute++;
        }
        if(minute>59)
        {
            minute-=60;
            hour++;
        }
        if(hour>=24)
        {
            hour-=24;
        }
        return *this;
    }
    CTime CTime::operator--(int)
    {
        CTime t=*this;
        second--;
        if(second<0)
        {
            second+=60;
            minute--;
        }
        if(minute<0)
        {
            minute+=60;
            hour--;
        }
        if(hour<0)
        {
            hour+=24;
        }
        return t;
    }
    CTime CTime::operator--()
    {
        CTime t=*this;
        --second;
        if(second<0)
        {
            second+=60;
            minute--;
        }
        if(minute<0)
        {
            minute+=60;
            hour--;
        }
        if(hour<0)
        {
            hour+=24;
        }
        return *this;
    }
    bool CTime::operator > (CTime &t)
    {
        if(hour>t.hour)
            return true;
            else
                return false;
        if(hour==t.hour&&minute>t.minute)
            return true;
            else
                return false;
        if(hour==t.hour&&minute==t.minute&&second>t.second)
            return true;
            else
                return false;
    }
    bool CTime::operator < (CTime &t)
    {
        if(hour<t.hour)
            return true;
            else
                return false;
        if(hour==t.hour&&minute<t.minute)
            return true;
            else
                return false;
        if(hour==t.hour&&minute==t.minute&&second<t.second)
            return true;
            else
                return false;
    }
    bool CTime::operator >= (CTime &t)
    {
        if(*this<t)return false;
        return true;
    }
    bool CTime::operator <= (CTime &t)
    {
        if(*this>t)return false;
        return true;
    }
    bool CTime::operator == (CTime &t)
    {
        if(*this>t||*this<t)return false;
        return true;
    }
    bool CTime::operator != (CTime &t)
    {
        if(*this==t)return false;
        return true;
    }
    CTime CTime::operator+(CTime &t)
    {
        int h,m,s;
        h=hour+t.hour;
        m=minute+t.minute;
        s=second+t.second;
        if(s>59)
        {
            s-=60;
        m++;
        }
        if(m>59)
        {
            m-=60;
        h++;
        }
        if(h>24)
        {
            h-=24;
        }
        CTime t0(h,m,s);
        return t0;
    }
    CTime CTime::operator+(int s)
    {
        int ss=s%60;
        int mm=(s/60)%60;
        int hh=s/3600;
        CTime t0(hh,mm,ss);
        return *this+t0;
    }
    CTime CTime::operator-(CTime &t)
    {
        int h,m,s;
        h=hour-t.hour;
        m=minute-t.minute;
        s=second-t.second;
        if(s<0)
        {
            s+=60;
             m--;
        }
        if(m<0)
        {
            m+=60;
            h--;
        }
        if(h<0)
        {
            h+=24;
        }
        CTime t0(h,m,s);
        return t0;
    }
    CTime CTime::operator-(int s)
    {
        int ss=s%60;
        int mm=(s/60)%60;
        int hh=s/3600;
        CTime t0(hh,mm,ss);
        return *this-t0;
    }
    CTime CTime::operator+=(CTime &c)
    {
        *this=*this+c;
        return *this;
    }
    CTime CTime::operator+=(int s)
    {
        *this=*this+s;
        return *this;
    }
    CTime CTime::operator-=(CTime &c)
    {
        *this=*this-c;
        return *this;
    }
    CTime CTime::operator-=(int s)
    {
        *this=*this-s;
        return *this;
    }
    //自行编制用于測试的main()函数。有些结果不必依赖display()函数,提倡用单步运行查看结果
    int main()
    {
        CTime t1(8,8,8),t2,t3,t4,t5,t6,t7,t8;
        int a,b,c,s1,s2;
        char m1,m2;
        cout<<"t1:";
        cout<<t1<<endl;
        cout<<"输入时间 t2:"<<endl;
        while(1)
        {
        cin>>a>>m1>>b>>m2>>c;
        if(a>24||a<0||b>60||b<0||c>60||c<0)
        cout<<"输入时间不正确!又一次输入:"<<endl;
        else if(m1!=':'||m2!=':')
        cout<<"时间格式不正确!

    又一次输入:"<<endl; else break; } t2.setTime(a,b,c); cout<<"t2: "; cout<<t2<<endl; if (t1>t2) cout<<"t1>t2"<<endl; if (t1<t2) cout<<"t1<t2"<<endl; if (t1==t2) cout<<"t1=t2"<<endl; if (t1!=t2) cout<<"t1≠t2"<<endl; //“≠”是怎么打出来的?? if (t1>=t2) cout<<"t1≥t2"<<endl; if (t1<=t2) cout<<"t1≤t2"<<endl; cout<<endl; t3=t1+t2; cout<<"t1+t2: "; cout<<t3<<endl; t4=t1-t2; cout<<"t1-t2: "; cout<<t4<<endl; cout<<"输入要t2添加的秒数:"<<endl; cin>>s1; t5=t2+s1; cout<<"t2添加"<<s1<<"秒: "; cout<<t5<<endl; cout<<"输入要t1降低的秒数:"<<endl; cin>>s2; t6=t2-s2; cout<<"t1降低"<<s2<<"秒: "; cout<<t6<<endl; cout<<"t1自增一秒后的结果:"; t7=++t1; cout<<t7<<endl; cout<<"t2自减一秒后的结果:"; t8=--t2; cout<<t8<<endl; }

    感悟:输入还没有弄懂,老是出错,就没有再写。一定要掌握它

  • 相关阅读:
    Effective C++ 学习一
    JavaScript 定义类和继承类的基本步骤
    Vararg collection Factory Method
    apache之httpd启动、终止、重启小结
    Thinking in C++ 学习笔记[1]
    Creational Pattern 之 Abstract Factory
    Perl WEB 开发之 Template
    C语言博客作业数据类型
    C语言博客作业一二维数组
    C语言博客作业函数
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10614143.html
Copyright © 2020-2023  润新知