Advertisement
noobdoob

Untitled

Apr 27th, 2021
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <sstream>
  4.  
  5. using namespace std;
  6.  
  7. class Date
  8. {
  9. public:
  10. Date(int mm=0, int dd=0, int yy=0)
  11. {
  12. year = yy;
  13. month = mm;
  14. day = dd;
  15. }
  16.  
  17. //another way to construct the object! "12/31/2019"
  18. Date(string dateString)
  19. {
  20. char temp;
  21. istringstream(dateString) >> month >> temp >> day >> temp >> year;
  22. }
  23.  
  24. //alternatively, << operator can be implemented!
  25. void display()
  26. {
  27. cout << month << '/' << day << '/' << year;
  28. }
  29.  
  30. //function to return true if year is leap year, false otherwise.
  31. bool isLeapYear()
  32. {
  33. if (year % 4)
  34. return false;
  35.  
  36. // year is divisible by 4
  37. if (year % 400 == 0)
  38. return true;
  39.  
  40. // year is not divisible by 400
  41. if (year % 100 == 0)
  42. return false;
  43.  
  44. // year is divisible by 4, but not divisible by 100
  45. return true;
  46. }
  47.  
  48. //increment the day, if needed, increment the month,
  49. //if needed, increment the year
  50. void increment()
  51. {
  52. //static makes this array to be allocated like a global variable
  53. //but it is used only within this function
  54. static int daysInMonths[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  55.  
  56. if ((month == 2) && isLeapYear())
  57. daysInMonths[2] = 29;
  58. else
  59. daysInMonths[2] = 28;
  60.  
  61. //increment the day, then make necessary adjustments
  62. day++;
  63. if (day > daysInMonths[month]) {
  64. day = 1;
  65. month++;
  66. if (month > 12) {
  67. month = 1;
  68. year++;
  69. }
  70. }
  71. }
  72.  
  73.  
  74. private:
  75. int day, month, year;
  76. };
  77.  
  78. //class to store time and display and do increment() operation
  79. class Time
  80. {
  81. public:
  82. Time(int hh=0, int mm=0, int ss=0)
  83. {
  84. hour = hh;
  85. minute = mm;
  86. second = ss;
  87. }
  88.  
  89. Time(string timeString)
  90. {
  91. char temp;
  92. istringstream(timeString) >> hour >> temp >> minute >> temp >> second;
  93. }
  94.  
  95. //second: 59 --> 60: increment minute
  96. //minute: 59 --> 60: increment hour
  97. //hour: 23-->24: hour=0
  98. //return true if the day rolls over, return false in all other circumstances.
  99. bool increment()
  100. {
  101. second++;
  102. if (second == 60) {
  103. second = 0;
  104. minute++;
  105. if (minute == 60) {
  106. minute = 0;
  107. hour++;
  108. if (hour == 24) {
  109. hour = 0;
  110. return true;
  111. }
  112. }
  113. }
  114. return false;
  115. }
  116.  
  117.  
  118. void display()
  119. {
  120. cout << setfill('0');
  121. if (hour == 0)
  122. cout << 12 << ':' << setw(2) << minute << ':' << setw(2) << second << " AM";
  123. else if (hour < 12)
  124. cout << setw(2) << hour << ':' << setw(2) << minute << ':' << setw(2) << second << " AM";
  125. else if (hour == 12)
  126. cout << setw(2) << hour << ':' << setw(2) << minute << ':' << setw(2) << second << " PM";
  127. else
  128. cout << setw(2) << hour-12 << ':' << setw(2) << minute << ':' << setw(2) << second << " PM";
  129. }
  130.  
  131. private:
  132. int hour, minute, second;
  133. };
  134.  
  135. //composition - we used 2 objects: Date & Time objects
  136. class DateTime
  137. {
  138. public:
  139. //pass the necessary parameters to each constructor
  140. //to populate member objects
  141. DateTime(int mm=0, int dd=0, int yy=0, int hh=0, int mmm=0, int ss=0)
  142. {
  143. date = Date(mm, dd, yy);
  144. time = Time(hh, mmm, ss);
  145. }
  146.  
  147. //another way to build DateTime object
  148. DateTime(Date dt, Time tt) {
  149. date = dt;
  150. time = tt;
  151. }
  152.  
  153. //another way to build DateTime object
  154. DateTime(string dateStr, string timeStr) {
  155. date = Date(dateStr);
  156. time = Time(timeStr);
  157. }
  158.  
  159. //another way to build DateTime object "1/1/2010 23:55:15"
  160. DateTime(string combinedStr) {
  161. string s1, s2;
  162. istringstream(combinedStr) >> s1 >> s2;
  163. DateTime(s1, s2);
  164. }
  165.  
  166. //increment by one second
  167. void increment()
  168. {
  169. // if day rolled over, time.increment() returns true -> increment the date
  170. if (time.increment())
  171. date.increment();
  172. }
  173.  
  174. void display()
  175. {
  176. date.display();
  177. cout << " ";
  178. time.display();
  179. }
  180.  
  181. private:
  182. Date date;
  183. Time time;
  184. };
  185.  
  186. /* Sample inputs:
  187. D 1/1/2010 40
  188. T 23:55:15 1000
  189. DT 1/1/2010 23:55:15 1000
  190. */
  191.  
  192.  
  193. int main()
  194. {
  195. Date date("1/1/1990");
  196.  
  197. Time time("12:15:15");
  198.  
  199. DateTime *dtp = new DateTime(date, time);
  200.  
  201. }
  202.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement