StoneHaos

Untitled

Dec 24th, 2020
610
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ConsoleApplication1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
  2. //
  3.  
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. class Time {
  9. public:
  10.     int h, m, s;
  11.     Time() {
  12.         h = 0;
  13.         m = 0;
  14.         s = 0;
  15.     }
  16.     Time(int h, int m, int s) {
  17.         if (h < 0 || m < 0 || s < 0) throw 1;
  18.         this->h = (h + (m + s / 60) / 60) % 24;
  19.         this->m = (m + s / 60) % 60;
  20.         this->s = s % 60;
  21.     }
  22.     Time(const Time& T) {
  23.         this->h = T.h;
  24.         this->m = T.m;
  25.         this->s = T.s;
  26.     }
  27.     ~Time() {}
  28.  
  29.     Time& operator--() {
  30.         s -= 5;
  31.         if (s < 0) {
  32.             s = 60 + s;
  33.             m--;
  34.             if (m < 0) {
  35.                 m = 60 + m;
  36.                 h--;
  37.                 if (h < 0)
  38.                     h = 24 + h;
  39.             }
  40.         }
  41.         return *this;
  42.     }
  43.     Time operator--(int) {
  44.         Time t(*this);
  45.         s -= 5;
  46.         if (s < 0) {
  47.             s = 60 + s;
  48.             m--;
  49.             if (m < 0) {
  50.                 m = 60 + m;
  51.                 h--;
  52.                 if (h < 0)
  53.                     h = 24 + h;
  54.             }
  55.         }
  56.         return t;
  57.     }
  58.     void operator+(Time T) {
  59.         s = (s + T.s);
  60.         m = (m + T.m + s / 60);
  61.         h = (h + T.h + m / 60) % 24;
  62.         m %= 60;
  63.         s %= 60;
  64.     }
  65.     friend Time& operator++(Time&);
  66.     friend Time operator++(Time&, int);
  67.     friend bool operator!=(Time, Time);
  68.     friend ostream& operator<<(ostream&, Time);
  69.     friend istream& operator>>(istream&, Time&);
  70. };
  71.  
  72. Time& operator++(Time &T) {
  73.     T.s += 5;
  74.     T.m += T.s / 60;
  75.     T.h += T.m / 60;
  76.     T.h %= 24;
  77.     T.m %= 60;
  78.     T.s %= 60;
  79.     return T;
  80. }
  81. Time operator++(Time &T, int) {
  82.     Time t(T);
  83.     T.s += 5;
  84.     T.m += T.s / 60;
  85.     T.h += T.m / 60;
  86.     T.h %= 24;
  87.     T.m %= 60;
  88.     T.s %= 60;
  89.     return t;
  90. }
  91.  
  92. bool operator!=(Time T1, Time T2) {
  93.     return (T1.h != T2.h || T1.m != T2.m || T1.s != T2.s);
  94. }
  95.  
  96. ostream& operator<<(ostream& out, Time T) {
  97.     out << T.h << ":" << T.m << ":" << T.s;
  98.     return out;
  99. }
  100. istream& operator>>(istream& in, Time& T) {
  101.     int h, m, s;
  102.     in >> h >> m >> s;
  103.     T = Time(h, m, s);
  104.     return in;
  105. }
  106.  
  107. int main() {
  108.     Time t(0, 0, 3), v(23, 59, 59);
  109.     try {
  110.         Time e(-1, 20, 20);
  111.     }
  112.     catch (int) {
  113.         cout << "Errror!\n";
  114.     }
  115.     cout << t++ << endl;
  116.     cout << t << endl;
  117.     t + v;
  118.     cout << t << endl;
  119.     cout << (t != v) << endl;
  120.     cout << t << endl;
  121.     cout << --t << endl;
  122.     cout << t << endl;
  123.     return 0;
  124. }
  125.  
RAW Paste Data