第九周实验报告二

#include <iostream>       
using namespace std;      
class CTime      
{      
private:      
    unsigned short int hour;    // 时       
    unsigned short int minute;  // 分       
    unsigned short int second;  // 秒      
    bool is_time(int,int,int);//判断时间是否合法     
    
public:      
    CTime(int h=0,int m=0,int s=0);      
    void setTime();      
    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);      
    //二目运算符的重载       
    CTime operator+(CTime &c);//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15       
    CTime operator-(CTime &c);//对照+理解       
    CTime operator+(int s);//返回s秒后的时间       
    CTime operator-(int s);//返回s秒前的时间       
    //一目运算符的重载       
    CTime operator++(int);//后置++,下一秒       
    CTime operator++();//前置++,下一秒       
    CTime operator--(int);//后置--,前一秒       
    CTime operator--();//前置--,前一秒       
    //赋值运算符的重载            
    CTime operator+=(CTime &c);      
    CTime operator-=(CTime &c);      
    CTime operator+=(int s);//返回s秒后的时间       
    CTime operator-=(int s);//返回s秒前的时间     
    //重载流插入运算符“<<”        
    friend ostream& operator << (ostream&,CTime&);      
    //重载流提取运算符“>>”        
    friend istream& operator >> (istream&,CTime&);    
};      
CTime::CTime(int h,int m,int s)      
{      
    hour=h;      
    minute=m;      
    second=s;      
}     
//输入函数定义     
void CTime::setTime()      
{    
    char c1,c2;    
    cout<<"请输入时间(格式 hh:mm:ss)";    
    while(1)    
    {    
        cin>>hour>>c1>>minute>>c2>>second;    
        if(c1!=':'||c2!=':')    
            cout<<"格式不正确,请重新输入"<<endl;    
        else if(!is_time(hour,minute,second))    
            cout<<"时间非法,请重新输入"<<endl;    
        else    
            break;    
    }    
}    
//判断函数是否合法     
bool CTime::is_time(int h,int m,int s)    
{    
    if(h<0||h>23||m<0||m>59||s<0||s>59)    
        return false;    
    return true;    
}    
    
void CTime::display()      
{      
    cout<<hour<<':'<<minute<<':'<<second<<endl;      
}      
//比较运算符(二目)的重载       
bool CTime::operator > (CTime &t) // 判断时间t1>t2         
{        
    if (hour>t.hour)       
        return true;        
    if (hour<t.hour)       
        return false;        
    if (minute>t.minute)       
        return true;        
    if (minute<t.minute)       
        return false;        
    if (second>t.second)       
        return true;        
    else       
        return false;        
}        
// 判断时间t1<t2      
bool CTime::operator < (CTime &t)      
{      
    if(hour<t.hour)      
        return true;      
    else if(hour>t.hour)      
        return false;      
    else if(minute<t.minute)      
        return true;      
    else if(minute>t.minute)      
        return false;      
    else if(second<t.second)      
        return true;      
    else      
        return false;      
}      
bool CTime::operator >= (CTime &t)//判断t1>=t2       
{      
    if(*this<t)      
        return false;      
    else      
        return true;      
}      
bool CTime::operator <= (CTime &t) // 判断时间t1<=t2         
{        
    if (*this>t)      
        return false;        
    return true;        
}        
bool CTime::operator == (CTime &t)// 判断时间t1==t2         
{        
    if (*this<t || *this>t)      
        return false;       
    else      
        return true;        
}       
bool CTime::operator != (CTime &t) // 判断时间t1!=t2         
{        
    if (*this==t)       
        return false;        
    else      
        return true;        
}      
//二目运算符的重载       
CTime CTime::operator+(CTime &c)//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15       
{      
    int h,m,s;      
    h=hour+c.hour;      
    m=minute+c.minute;      
    s=second+c.second;      
    if(s>59)      
    {      
        s-=60;      
        m++;      
    }      
    if(m>59)      
    {      
        m-=60;      
        h++;      
    }      
    while(h>23)      
        h-=24;      
    CTime t(h,m,s);      
    return t;      
}      
CTime CTime::operator-(CTime &c)//对照+理解       
{      
    int h,m,s;      
    h=hour-c.hour;      
    m=minute-c.minute;      
    s=second-c.second;      
    if(s<0)      
    {      
        s+=60;      
        m--;      
    }      
    if(m<0)      
    {      
        m+=60;      
        h--;      
    }      
    if(h<0)      
        h+=24;      
    CTime t(h,m,s);      
    return t;      
}      
CTime CTime::operator+(int s)//返回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-(int s)//返回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++(int)//后置++,下一秒       
{      
    CTime temp=*this;      
    *this+=1;      
    return temp;      
}      
CTime CTime::operator++()//前置++,下一秒       
{      
    *this+=1;      
    return *this;      
}      
CTime CTime::operator--(int)//后置--,前一秒       
{      
    CTime temp=*this;      
    *this-=1;      
    return temp;      
}      
CTime CTime::operator--()//前置--,前一秒       
{      
    *this-=1;      
    return *this;      
}      
//赋值运算符的重载            
CTime CTime::operator+=(CTime &c)        
{        
    *this=*this+c;        
    return *this;        
}        
CTime CTime::operator-=(CTime &c)        
{        
    *this=*this-c;        
    return *this;        
}        
CTime CTime::operator+=(int s)//返回s秒后的时间         
{        
    *this=*this+s;        
    return *this;        
}        
CTime CTime::operator-=(int s)//返回s秒前的时间         
{        
    *this=*this-s;        
    return *this;        
}      
ostream& operator << (ostream&output,CTime&c)      
{       
    output<<c.hour <<":"<<c.minute <<":"<<c.second <<endl;       
    return output;      
}         
istream& operator >> (istream& input,CTime & c)      
{       
    input>>c.hour>>c.minute>>c.second;      
    return input;      
}      
void main()      
{      
    int n;    
    CTime t1,t2,t;     
    t1.setTime();    
    cout<<"t1为:";      
    t1.display();     
    t2.setTime();    
    cout<<"t2为:";      
    t2.display();      
    cout<<"下面比较这两个时间大小:\n";      
    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;      
    //下面自行设计对其他运算符的重载的测试       
    t1++;      
    cout<<"t1++为 ";      
    t1.display();      
    ++t2;      
    cout<<"++t2为 ";      
    t2.display();      
    
    t=t1+t2;      
    cout<<"t1+t2为: ";      
    t.display();      
    t=t1-t2;      
    cout<<"t1-t2为: ";      
    t.display();      
    t1+=t2;      
    cout<<"t1+=t2为: ";      
    t1.display();      
    t1-=t2;      
    cout<<"t1-=t2为: ";      
    t1.display();     
    cout<<endl;    
    cout<<"现在t1的时间是:";    
    t1.display();    
    cout<<"输入您想增加的时间以(秒)制:";    
    cin>>n;    
    cout<<"增加"<<n<<"秒后的时间为:";    
    t1=t1+n;    
    t1.display();    
    cout<<"现在t2的时间为:";    
    t2.display();    
    cout<<"输入您想减少的时间以(秒)制:";    
    cin>>n;    
    cout<<"减少"<<n<<"秒后的时间为:";    
    t2=t2-n;    
    t2.display();    
    system("pause");        
    
}         


是不是有些能在VC2008中能运行的程序,不能在VC6.0中运行啊?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值