fork download
  1. #include <cmath>
  2. #include <cstdio>
  3. #include <vector>
  4. #include <iostream>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. class Time
  9. {
  10. int hour;
  11. int minute;
  12.  
  13. void allFromMinutes()
  14. {
  15. hour = minute / 60;
  16. minute %= 60;
  17. }
  18. public:
  19.  
  20. Time() : hour(0), minute(0)
  21. {}
  22. Time(int hour, int minute) : hour(hour), minute(minute)
  23. {}
  24. Time(Time const& adolf) : Time(adolf.getHour(), adolf.getMinute())
  25. {}
  26.  
  27. void addMinutes(int minutes)
  28. {
  29. minute += minutes;
  30. while (minute >= 60)
  31. {
  32. minute -= 60;
  33. hour++;
  34. }
  35. }
  36. void addHour(int hour)
  37. {
  38. this->hour += hour;
  39. while (this->hour > 24)
  40. {
  41. this->hour -= 24;
  42. }
  43. }
  44. void removeMinutes(int minutes)
  45. {
  46. while (minutes > 0)
  47. {
  48. minute -= minutes;
  49. if (minute < 0)
  50. {
  51. hour--;
  52. minutes = (-minute) - 1;
  53. minute = 59;
  54. }
  55. else
  56. {
  57. minutes -= minutes;
  58. }
  59. }
  60. }
  61. void removeHour(int hour)
  62. {
  63. this->hour -= hour;
  64. if (this->hour < 0)
  65. {
  66. this->hour += 24;
  67. }
  68. }
  69. void setHour(int hour) { this->hour = hour; }
  70. void setMinute(int minute) { this->minute = minute; }
  71.  
  72. int allToMinutes() const
  73. {
  74. return minute + hour * 60;
  75. }
  76.  
  77. int getHour() const { return hour; }
  78. int getMinute() const {
  79. return minute;
  80. }
  81.  
  82. friend ostream& operator<<(ostream& out, Time const& a);
  83. Time& operator=(Time const& a)
  84. {
  85. setHour(a.getHour());
  86. setMinute(a.getMinute());
  87. return *this;
  88. }
  89. friend bool operator==(Time const& a, Time const& b)
  90. {
  91. return (a.getHour() == b.getHour() && a.getMinute() == b.getMinute());
  92. }
  93. Time operator-(Time const& a) const
  94. {
  95. Time temp(*this);
  96. Time res(0, 0);
  97. while (temp.getHour() != a.getHour())
  98. {
  99. temp.addHour(1);
  100. res.addHour(1);
  101. }
  102.  
  103. if (temp.getMinute() > a.getMinute())
  104. {
  105. res.removeHour(1);
  106. res.setMinute(60 - (temp.getMinute() - a.getMinute()));
  107. }
  108. else if (temp.getMinute() < a.getMinute())
  109. {
  110. res.setMinute((a.getMinute() - temp.getMinute()));
  111. }
  112.  
  113. return res;
  114. }
  115. };
  116.  
  117. ostream& operator<<(ostream& out, Time const& a)
  118. {
  119. if (a.getHour() < 10) { out << 0; }
  120. out << a.getHour() << ':';
  121. if (a.getMinute() < 10) { out << 0; }
  122. out << a.getMinute();
  123.  
  124. return out;
  125. }
  126.  
  127. int main() {
  128.  
  129. Time a(23, 30);
  130. Time b(1, 30);
  131.  
  132. Time c(a);
  133. c = a - b;
  134. cout << c << endl;
  135.  
  136. system("pause");
  137. return 0;
  138. }
  139.  
Success #stdin #stdout #stderr 0s 15232KB
stdin
Standard input is empty
stdout
02:00
stderr
sh: 1: pause: not found