Advertisement
RobertDeMilo

WB4.11 Перегрузка арифметических операций

Oct 12th, 2023
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <vector>
  5. #include <iomanip>
  6. #include <sstream>
  7.  
  8. using namespace std;
  9.  
  10. class Duration
  11. {
  12. private:
  13.  
  14.     int hour;
  15.     int min;
  16.  
  17. public:
  18.  
  19.     Duration(int hour_, int min_)
  20.     {
  21.         int total = hour_ * 60 + min_;
  22.         hour = total / 60;
  23.         min = total % 60;
  24.     }
  25.  
  26.     int Hour() const
  27.     {
  28.         return hour;
  29.     }
  30.  
  31.     int Min() const
  32.     {
  33.         return min;
  34.     }
  35. };
  36.  
  37. bool CompareDurations(const Duration& lhs, const Duration& rhs)
  38. {
  39.     if (lhs.Hour() == rhs.Hour())
  40.     {
  41.         return lhs.Min() < rhs.Min();
  42.     }
  43.  
  44.     return lhs.Hour() < rhs.Hour();
  45. }
  46.  
  47. bool operator<(const Duration& lhs, const Duration& rhs)
  48. {
  49.     if (lhs.Hour() == rhs.Hour())
  50.     {
  51.         return lhs.Min() < rhs.Min();
  52.     }
  53.     return lhs.Hour() < rhs.Hour();
  54. }
  55.  
  56. ostream& operator<<(ostream& out, const Duration& dur)
  57. {
  58.     out << setfill('0');
  59.     out << setw(2) << dur.Hour() << ':' << setw(2) << dur.Min();
  60.  
  61.     return out;
  62. }
  63.  
  64. istream& operator >> (istream& in, Duration& dur)
  65. {
  66.     int hour;
  67.     in >> hour;
  68.     in.ignore();
  69.  
  70.     int min;
  71.     in >> min;
  72.    
  73.     dur = Duration(hour, min); // !!!!!!!!!!!!!!!
  74.  
  75.     return in;
  76. }
  77.  
  78. Duration operator+(const Duration& lhs, const Duration& rhs)
  79. {
  80.     return Duration{ lhs.Hour() + rhs.Hour(),lhs.Min() + rhs.Min() };
  81. }
  82.  
  83. int main()
  84. {
  85.     Duration dur1{ 1,50 };
  86.     Duration dur2{ 1,59 };
  87.    
  88.     cout << dur1 + dur2 << endl;
  89.  
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement