ctimespan.h
#pragma once
#include<iostream>
using namespace std;
class ctimespan
{
private:
int hour,minutes,second;
public:
ctimespan(int=0,int=0,int=0);
~ctimespan(void);
ctimespan operator+(const ctimespan&);
ctimespan operator-(const ctimespan&);
bool operator<(ctimespan&);
bool operator<=(ctimespan&);
bool operator>(ctimespan&);
bool operator>=(ctimespan&);
bool operator==(ctimespan&);
bool operator!=(ctimespan&);
friend ostream &operator<<(ostream &out,const ctimespan &a);
friend istream &operator>>(istream &in,ctimespan &a);
};
ctimespan.cpp
#include "ctimespan.h"
ctimespan::ctimespan(int a,int b,int c)
{
hour=(a<0 || a>23)?0:a;
minutes=(b<0 || b>59)?0:b;
second=(c<0 || c>59) ? 0:c;
}
ctimespan::~ctimespan(void)
{
}
ctimespan ctimespan::operator+(const ctimespan &x)
{
ctimespan c;
int a,b;
a=(this->second+x.second)/60;
c.second=(this->second+x.second)%60;
b=(this->minutes+x.minutes+a)/60;
c.minutes=(this->minutes+x.minutes+a)%60;
c.hour=hour+b+x.hour;
return c;
}
ostream &operator<<(ostream &out,const ctimespan &a)
{
if(a.hour<0 || a.minutes<0||a.second<0) out<<"-";
out<<(a.hour<10 && a.hour>=0?"0":"")<<abs(a.hour)<<":"
<<(a.minutes<10 && a.minutes>=0?"0":"")<<abs(a.minutes)<<":"
<<(a.second<10 && a.second>=0?"0":"")<<abs(a.second);
return out;
}
istream &operator>>(istream &in,ctimespan &a)
{
in>>a.hour>>a.minutes>>a.second;
return in;
}
ctimespan ctimespan::operator-(const ctimespan&x)
{
ctimespan c;
int a,b;
a=(this->second-x.second<0)?-1:0;
c.second=(a==-1)?60+second-x.second:second-x.second;
b=(minutes-x.minutes+a)<0?-1:0;
c.minutes=(b==-1)?60+minutes-x.minutes+a:minutes-x.minutes+a;
c.hour=b+hour-x.hour;
if(c.hour<0)
{
a=(-this->second+x.second<0)?-1:0;
c.second=(a==-1)?60-second+x.second:-second+x.second;
b=(-minutes+x.minutes+a)<0?-1:0;
c.minutes=(b==-1)?60-minutes+x.minutes+a:-minutes+x.minutes+a;
c.hour=-(b-hour+x.hour);
return c;
}
return c;
}
bool ctimespan::operator<(ctimespan&x)
{
ctimespan c;
int a,b;
a=(this->second-x.second<0)?-1:0;
c.second=(a==-1)?60+second-x.second:second-x.second;
b=(minutes-x.minutes+a)<0?-1:0;
c.minutes=(b==-1)?60+minutes-x.minutes+a:minutes-x.minutes+a;
c.hour=b+hour-x.hour;
if(c.hour<0) return true;return false;
}
bool ctimespan::operator<=(ctimespan&x)
{
ctimespan c;
int a,b;
a=(this->second-x.second<0)?-1:0;
c.second=(a==-1)?60+second-x.second:second-x.second;
b=(minutes-x.minutes+a)<0?-1:0;
c.minutes=(b==-1)?60+minutes-x.minutes+a:minutes-x.minutes+a;
c.hour=b+hour-x.hour;
if(c.hour<=0) return true;return false;
}
bool ctimespan::operator>(ctimespan&x)
{
ctimespan c;
int a,b;
a=(this->second-x.second<0)?-1:0;
c.second=(a==-1)?60+second-x.second:second-x.second;
b=(minutes-x.minutes+a)<0?-1:0;
c.minutes=(b==-1)?60+minutes-x.minutes+a:minutes-x.minutes+a;
c.hour=b+hour-x.hour;
if(c.hour>=0 && (c.minutes!=0 || c.second!=0)) return true;return false;
}
bool ctimespan::operator>=(ctimespan&x)
{
ctimespan c;
int a,b;
a=(this->second-x.second<0)?-1:0;
c.second=(a==-1)?60+second-x.second:second-x.second;
b=(minutes-x.minutes+a)<0?-1:0;
c.minutes=(b==-1)?60+minutes-x.minutes+a:minutes-x.minutes+a;
c.hour=b+hour-x.hour;
if(c.hour>=0 && c.minutes>=0 && c.second>=0) return true;return false;
}
bool ctimespan::operator==(ctimespan&x)
{
if(second==x.second && minutes==x.minutes && hour==x.hour) return true;return false;
}
bool ctimespan::operator!=(ctimespan&x)
{
if(second!=x.second || minutes!=x.minutes || hour!=x.hour) return true;return false;
}
main.cpp
#include"ctimespan.h"
void main()
{
ctimespan x(1,1,1),y(28,28,28);
cout<<x+y<<endl;
cout<<x-y<<endl;
if(x<y) cout<<1; else cout<<0;
if(x<=y) cout<<1; else cout<<0;
if(x>y) cout<<1; else cout<<0;
if(x>=y) cout<<1; else cout<<0;
if(x==y) cout<<1; else cout<<0;
if(x!=y) cout<<1; else cout<<0;
system("pause");
}





