Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdexcept>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. class Date {
  8. private:
  9. int day, month, year, days_from_begining;
  10. public:
  11. Date(int d, int m, int y) {
  12. if (y < 1970 || y > 2099) {
  13. throw "std::invalid_argument";
  14. } else if (m > 12 || m < 1) {
  15. throw "std::invalid_argument";
  16. } else if ((((m % 2 == 1 && m <= 7) || ((m % 2 == 0) && (m >= 8))) && 1 <= d && d <= 31)
  17. || (((m == 4) || (m == 6) || (m == 9)) && (1 <= d) && (d <= 30)) ||
  18. (((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) && 1 <= d && d <= 29)
  19. || (!((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) && 1 <= d && d <= 28)) {
  20. day = d;
  21. month = m;
  22. year = y;
  23. } else {
  24. throw "std::invalid_argument";
  25. }
  26.  
  27. //Считаем, сколько дней прошло от начала
  28. int k = 0;
  29. for (int i = 1; i != month; ++i) {
  30. if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {
  31. k += 31;
  32. } else if (i == 4 || i == 6 || i == 9) {
  33. k += 30;
  34. } else if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)) {
  35. k += 29;
  36. } else {
  37. k += 28;
  38. }
  39. }
  40. k += day;
  41. int leap_years = 0;
  42. leap_years = (year - 1972) / 4 + 1;
  43. k += (year - 1970)*356 + leap_years;
  44. days_from_begining = k;
  45. }
  46.  
  47. int GetDay() const {
  48. return day;
  49. }
  50.  
  51. int GetMonth() const {
  52. return month;
  53. }
  54.  
  55. int GetYear() const {
  56. return year;
  57. }
  58.  
  59. bool operator++() {
  60. if (day == 31 && month == 12) {
  61. day = 1;
  62. month = 1;
  63. ++year;
  64. } else if ((month % 2 == 1 && month <= 7 || month % 2 == 0 && month >= 8) && day == 31) {
  65. day = 1;
  66. ++month;
  67. } else if ((month == 4 || month == 6 || month == 9) && day == 30) {
  68. day = 1;
  69. ++month;
  70. } else if ((year % 4 == 0 && year % 100 != 0) && day == 29) {
  71. day = 1;
  72. ++month;
  73. } else if (!(year % 4 == 0 && year % 100 != 0) && day == 28) {
  74. day = 1;
  75. ++month;
  76. } else {
  77. ++day;
  78. }
  79. }
  80.  
  81. bool operator--() {
  82. if (day == 1 && month == 1) {
  83. day = 31;
  84. month = 12;
  85. --year;
  86. } else if ((month % 2 == 1 && month <= 7 || month % 2 == 0 && month >= 8) && day == 1) {
  87. day = 30;
  88. --month;
  89. } else if ((month == 4 || month == 6 || month == 9) && day == 1) {
  90. day = 31;
  91. --month;
  92. } else if ((year % 4 == 0 && year % 100 != 0) && day == 29) {
  93. day = 1;
  94. ++month;
  95. } else if (!(year % 4 == 0 && year % 100 != 0) && day == 28) {
  96. day = 1;
  97. ++month;
  98. } else if (month == 3 && day == 1) {
  99. if (year % 4 == 0 && year % 100 != 0) {
  100. --month;
  101. day = 29;
  102. } else {
  103. --month;
  104. day = 28;
  105. }
  106. } else {
  107. --day;
  108. }
  109. }
  110.  
  111. Date operator+(Date &date2) const {
  112.  
  113. }
  114.  
  115. };
  116.  
  117. int main() {
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement