Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- typedef unsigned char uchar;
- typedef unsigned int ulong;
- //Создайте класс Data
- //с операциями +(int), +=(int), =, ==, !=, >, < , >=, < =, ++ и --
- //(int) - количество дней
- class CData{
- uchar m_day;
- uchar m_month;
- ulong m_year;
- bool __isleab(){
- if(!(m_year % 400)) return true;
- else if (!(m_year % 100)) return false;
- else if(!(m_year % 4)) return true;
- return false;
- }
- uchar __daysinmonth(uchar month){
- uchar days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- if(__isleab()) days[1] = 29;
- return days[month-1];
- }
- int __compare (CData b){
- if(m_year < b.m_year) return -1;
- else if(m_year == b.m_year){
- if(m_month < b.m_month) return -1;
- else if(m_month == b.m_month){
- if(m_day < b.m_day) return -1;
- else if(m_day == b.m_day) return 0;
- }
- }
- return 1;
- }
- public:
- CData(uchar day, uchar month, ulong year){
- m_day = day; m_month = month; m_year = year;
- }
- CData operator += (int d){
- while(d){
- if(d + m_day <= __daysinmonth(m_month) && d + m_day > 0){ m_day += d; d = 0; }
- else{
- if(d + m_day > 0){
- d -= __daysinmonth(m_month);
- m_month++;
- if(m_month == 13){m_month = 1; m_year++;}
- }
- }
- }
- }
- bool operator <= (CData b){ return __compare(b) <= 0;}
- bool operator >= (CData b){ return __compare(b) >= 0;}
- bool operator < (CData b){ return __compare(b) < 0;}
- bool operator > (CData b){ return __compare(b) > 0;}
- bool operator == (CData b){ return !__compare(b); }
- bool operator != (CData b){ return __compare(b); }
- CData operator ++ (){
- CData _r = *this;
- *this += 1;
- return _r;
- }
- CData operator -- (){
- CData _r = *this;
- *this += (-1);
- return _r;
- }
- };
- const CData operator + (CData a, int b){
- CData c = a; c += b;
- return c;
- }
- const CData operator + (int b, CData a){
- CData c = a; c += b;
- return c;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement