程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 2013第八周上機任務[項目2-Time類中的運算符重載]

2013第八周上機任務[項目2-Time類中的運算符重載]

編輯:C++入門知識

[cpp]
/* 
* Copyright (c) 2013, 煙台大學計算機學院                     
* All rights reserved.                     
* 文件名稱:test.cpp                     
* 作者:樊露露                    
* 完成日期:2013 年 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){hour=h;minute=m;second=s;} 
 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); 
 //二目運算符的重載  
 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); 
 CTime operator-=(int s); 
}; 
 
 
//下面實現所有的運算符重載代碼。  
 
void CTime::display() 

    cout<<hour<<":"<<minute<<":"<<second<<endl; 

 
bool CTime::operator>(CTime &t) 

   if(hour==t.hour) 
   { 
       if(minute==t.minute) 
       { 
           if(second>t.second) 
            return true; 
           else 
            return false; 
       } 
       if(minute>t.minute) 
        return true; 
       else 
        return false; 
   } 
   if(hour>t.hour) 
    return true; 
   else 
    return false; 

 
bool CTime::operator<(CTime &t) 

   if(hour==t.hour) 
   { 
       if(minute==t.minute) 
       { 
           if(second<t.second) 
            return true; 
           else 
            return false; 
       } 
       if(minute<t.minute) 
        return true; 
       else 
        return false; 
   } 
   if(hour<t.hour) 
    return true; 
   else 
    return false; 

bool CTime::operator>=(CTime &t) 

   if(hour==t.hour) 
   { 
       if(minute==t.minute) 
       { 
           if(second>=t.second) 
            return true; 
           else 
            return false; 
       } 
       if(minute>t.minute) 
        return true; 
       else 
        return false; 
   } 
   if(hour>t.hour) 
    return true; 
   else 
    return false; 

 
bool CTime::operator<=(CTime &t) 

   if(hour==t.hour) 
   { 
       if(minute==t.minute) 
       { 
           if(second<=t.second) 
            return true; 
           else 
            return false; 
       } 
       if(minute<t.minute) 
        return true; 
       else 
        return false; 
   } 
   if(hour<t.hour) 
    return true; 
   else 
    return false; 

bool CTime::operator==(CTime &t) 

    if(hour==t.hour&&minute==t.minute&&second==t.second) 
        return true; 
    else 
        return false; 

bool CTime::operator!=(CTime &t) 

    if(hour==t.hour&&minute==t.minute&&second==t.second) 
        return false; 
    else 
        return true; 

 
CTime CTime::operator+(CTime &c) 

    CTime t; 
    t.hour=hour+c.hour; 
    t.minute=minute+c.minute; 
    t.second=second+c.second; 
    if(t.second>=60) 
    { 
        t.second=t.second-60; 
        t.minute=t.minute+1; 
    } 
    if(t.minute>=60) 
    { 
        t.minute=t.minute-60; 
        t.hour=t.hour+1; 
    } 
    if(t.hour>=24) 
    { 
        t.hour=t.hour-24; 
    } 
    return t; 

 
CTime CTime::operator-(CTime &c) 

    int h,m,s;   
    s=second-c.second;   
    m=minute-c.minute;   
    h=hour-c.hour;   
    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-(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++(int)//後置++,下一秒     
{       
    CTime t=*this;   
    *this=*this+1;   
    return t;   
}   
 
CTime CTime::operator++()//前置++,下一秒   
{   
    *this=*this+1;   
    return *this;   
}   
CTime CTime::operator--(int)//後置--,前一秒     
{   
    CTime t=*this;   
    *this=*this-1;   
    return t;  }     
CTime CTime::operator--()//前置--,前一秒    
{   
    *this=*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;   
}   
 
//為簡化編程,請注意通過調用已有函數,利用好各函數之間的關系  
 
 
int main() 

 CTime t1(8,20,25),t2(11,20,50),t; 
 cout<<"t1為:"; 
 t1.display(); 
 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; 
 //下面自行設計對其他運算符的重載的測試  
    t=t1+t2; 
    cout<<"t1+t2="; 
    t.display(); 
    t=t1-t2; 
    cout<<"t1-t2="; 
    t.display(); 
    t=t1++;   
    cout<<"t1++="; 
    t.display(); 
    t=++t1;  
    cout<<"++t1="; 
    t.display(); 
    t1--;   
    cout<<"t1--="; 
    t1.display(); 
    --t1;    
    cout<<"--t1="; 
    t1.display(); 
    t=t1+2000; 
    cout<<"t1+2000="; 
    t.display(); 
    t=t1-5000; 
    cout<<"t1-2000="; 
    t.display(); 
    t1+=t2; 
    cout<<"t1+=t2="; 
    t1.display(); 
    t1-=t2;   
    cout<<"t1-=t2="; 
    t1.display(); 
    t1+=2000;   
    t1-=5000;   
    return 0;  

/*
* Copyright (c) 2013, 煙台大學計算機學院                    
* All rights reserved.                    
* 文件名稱:test.cpp                    
* 作者:樊露露                   
* 完成日期:2013 年 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){hour=h;minute=m;second=s;}
 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);
 //二目運算符的重載
 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);
 CTime operator-=(int s);
};


//下面實現所有的運算符重載代碼。

void CTime::display()
{
    cout<<hour<<":"<<minute<<":"<<second<<endl;
}

bool CTime::operator>(CTime &t)
{
   if(hour==t.hour)
   {
       if(minute==t.minute)
       {
           if(second>t.second)
            return true;
           else
            return false;
       }
       if(minute>t.minute)
        return true;
       else
        return false;
   }
   if(hour>t.hour)
    return true;
   else
    return false;
}

bool CTime::operator<(CTime &t)
{
   if(hour==t.hour)
   {
       if(minute==t.minute)
       {
           if(second<t.second)
            return true;
           else
            return false;
       }
       if(minute<t.minute)
        return true;
       else
        return false;
   }
   if(hour<t.hour)
    return true;
   else
    return false;
}
bool CTime::operator>=(CTime &t)
{
   if(hour==t.hour)
   {
       if(minute==t.minute)
       {
           if(second>=t.second)
            return true;
           else
            return false;
       }
       if(minute>t.minute)
        return true;
       else
        return false;
   }
   if(hour>t.hour)
    return true;
   else
    return false;
}

bool CTime::operator<=(CTime &t)
{
   if(hour==t.hour)
   {
       if(minute==t.minute)
       {
           if(second<=t.second)
            return true;
           else
            return false;
       }
       if(minute<t.minute)
        return true;
       else
        return false;
   }
   if(hour<t.hour)
    return true;
   else
    return false;
}
bool CTime::operator==(CTime &t)
{
    if(hour==t.hour&&minute==t.minute&&second==t.second)
        return true;
    else
        return false;
}
bool CTime::operator!=(CTime &t)
{
    if(hour==t.hour&&minute==t.minute&&second==t.second)
        return false;
    else
        return true;
}

CTime CTime::operator+(CTime &c)
{
    CTime t;
    t.hour=hour+c.hour;
    t.minute=minute+c.minute;
    t.second=second+c.second;
    if(t.second>=60)
    {
        t.second=t.second-60;
        t.minute=t.minute+1;
    }
    if(t.minute>=60)
    {
        t.minute=t.minute-60;
        t.hour=t.hour+1;
    }
    if(t.hour>=24)
    {
        t.hour=t.hour-24;
    }
    return t;
}

CTime CTime::operator-(CTime &c)
{
 int h,m,s; 
    s=second-c.second; 
    m=minute-c.minute; 
    h=hour-c.hour; 
    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-(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++(int)//後置++,下一秒  
{     
 CTime t=*this; 
 *this=*this+1; 
 return t; 

CTime CTime::operator++()//前置++,下一秒

    *this=*this+1; 
    return *this; 

CTime CTime::operator--(int)//後置--,前一秒  

    CTime t=*this; 
    *this=*this-1; 
    return t;  }   
CTime CTime::operator--()//前置--,前一秒 

 *this=*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; 

//為簡化編程,請注意通過調用已有函數,利用好各函數之間的關系


int main()
{
 CTime t1(8,20,25),t2(11,20,50),t;
 cout<<"t1為:";
 t1.display();
 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;
 //下面自行設計對其他運算符的重載的測試
    t=t1+t2;
    cout<<"t1+t2=";
    t.display();
 t=t1-t2;
    cout<<"t1-t2=";
    t.display();
 t=t1++; 
 cout<<"t1++=";
    t.display();
    t=++t1;
 cout<<"++t1=";
    t.display();
    t1--; 
 cout<<"t1--=";
    t1.display();
    --t1;  
 cout<<"--t1=";
    t1.display();
    t=t1+2000;
 cout<<"t1+2000=";
    t.display();
    t=t1-5000;
 cout<<"t1-2000=";
    t.display();
    t1+=t2;
 cout<<"t1+=t2=";
    t1.display();
    t1-=t2; 
 cout<<"t1-=t2=";
    t1.display();
    t1+=2000; 
    t1-=5000; 
    return 0;
}

\
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved