Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.50 KB | None | 0 0
  1. /*
  2. Hubert Zhang - CPS 171
  3. c17121
  4. Last Modified 3/31/2020
  5. */
  6. #include <iostream>
  7. #include <iomanip>
  8. #include <fstream>
  9. #include <string>
  10. #include <cmath>
  11.  
  12. using namespace std;
  13.  
  14. bool Leap_Year(int year);
  15. void Get_Date(ifstream& fin, ofstream& fout, int& month, int& day, int& year, bool& valid, bool& leap);
  16. string Print_Month(int month);
  17. int Convert_to_Julian(int month, int day, bool& leap);
  18. int Time_Elapsed(int year1, int year2, int julian1, int julian2);
  19.  
  20. int main()
  21. {
  22. ifstream fin;
  23. ofstream fout;
  24. fin.open("mp4in.txt");
  25. fout.open("mp4out.txt");
  26.  
  27. int month1 = 0, day1 = 0, year1 = 0, month2 = 0, day2 = 0, year2 = 0, time = 0,
  28. julian1 = 0, julian2 = 0, temp_year, temp_month, temp_day;
  29. bool valid1 = true, leap1 = true, valid2 = true, leap2 = true;
  30.  
  31. Get_Date(fin, fout, month1, day1, year1, valid1, leap1);
  32. Get_Date(fin, fout, month2, day2, year2, valid2, leap2);
  33. while (fin)
  34. {
  35. if (year1 > year2)
  36. {
  37. temp_year = year1;
  38. year1 = year2;
  39. year2 = temp_year;
  40. temp_month = month1;
  41. month1 = month2;
  42. month2 = temp_month;
  43. temp_day = day1;
  44. day1 = day2;
  45. day2 = temp_day;
  46. }
  47. else if (month1 == month2)
  48. {
  49. if (day1 > day2)
  50. {
  51. temp_day = day1;
  52. day1 = day2;
  53. day2 = temp_day;
  54. }
  55. }
  56.  
  57. fout << month1 << " " << day1 << " " << year1 << endl;
  58. fout << month2 << " " << day2 << " " << year2 << endl;
  59.  
  60. julian1 = Convert_to_Julian(month1, day1, leap1);
  61. julian2 = Convert_to_Julian(month2, day2, leap2);
  62. time = Time_Elapsed(year1, year2, julian1, julian2);
  63.  
  64. if (time == 1)
  65. {
  66. fout << "There is " << time << " day between " << Print_Month(month1) << " " << day1 << ", "
  67. << year1 << " and " << Print_Month(month2) << " " << day2 << ", " << year2 << endl;
  68. }
  69. else
  70. {
  71. fout << "There is " << time << " days between " << Print_Month(month1) << " " << day1 << ", "
  72. << year1 << " and " << Print_Month(month2) << " " << day2 << ", " << year2 << endl;
  73. }
  74. Get_Date(fin, fout, month1, day1, year1, valid1, leap1);
  75. Get_Date(fin, fout, month2, day2, year2, valid2, leap2);
  76. }
  77. }
  78.  
  79. bool Leap_Year(int year)
  80. {
  81. bool leap;
  82. if (year % 4 == 0)
  83. {
  84. leap = true;
  85. if (year % 100 == 0)
  86. {
  87. if (year % 400 != 0)
  88. {
  89. leap = false;
  90. }
  91. }
  92. }
  93. else
  94. {
  95. leap = false;
  96. }
  97. return leap;
  98. }
  99.  
  100. void Get_Date(ifstream& fin, ofstream& fout, int& month, int& day, int& year, bool& valid, bool& leap)
  101. {
  102. fin >> month >> day >> year;
  103. leap = Leap_Year(year);
  104.  
  105. if (year < 1582)
  106. {
  107. fout << "Error. Invalid Year. ";
  108. valid = false;
  109. }
  110.  
  111. if (month < 1 || month > 12)
  112. {
  113. fout << "Error. Invalid Month. ";
  114. valid = false;
  115. }
  116.  
  117. switch (month)
  118. {
  119. case 1:
  120. if (day < 1 || day > 31)
  121. {
  122. fout << "Error. Invalid Day. ";
  123. valid = false;
  124. }
  125. break;
  126. case 2:
  127. if (leap)
  128. {
  129. if (day < 1 || day > 29)
  130. {
  131. fout << "Error. Invalid Day. ";
  132. valid = false;
  133. }
  134. }
  135. else if (day < 1 || day > 28)
  136. {
  137. fout << "Error. Invalid Day. ";
  138. valid = false;
  139. }
  140. break;
  141. case 3:
  142. if (day < 1 || day > 31)
  143. {
  144. fout << "Error. Invalid Day. ";
  145. valid = false;
  146. }
  147. break;
  148. case 4:
  149. if (day < 1 || day > 30)
  150. {
  151. fout << "Error. Invalid Day. ";
  152. valid = false;
  153. }
  154. break;
  155. case 5:
  156. if (day < 1 || day > 31)
  157. {
  158. fout << "Error. Invalid Day. ";
  159. valid = false;
  160. }
  161. break;
  162. case 6:
  163. if (day < 1 || day > 30)
  164. {
  165. fout << "Error. Invalid Day. ";
  166. valid = false;
  167. }
  168. break;
  169. case 7:
  170. if (day < 1 || day > 31)
  171. {
  172. fout << "Error. Invalid Day. ";
  173. valid = false;
  174. }
  175. break;
  176. case 8:
  177. if (day < 1 || day > 31)
  178. {
  179. fout << "Error. Invalid Day. ";
  180. valid = false;
  181. }
  182. break;
  183. case 9:
  184. if (day < 1 || day > 30)
  185. {
  186. fout << "Error. Invalid Day. ";
  187. valid = false;
  188. }
  189. break;
  190. case 10:
  191. if (day < 1 || day > 31)
  192. {
  193. fout << "Error. Invalid Day. ";
  194. valid = false;
  195. }
  196. break;
  197. case 11:
  198. if (day < 1 || day > 30)
  199. {
  200. fout << "Error. Invalid Day. ";
  201. valid = false;
  202. }
  203. break;
  204. case 12:
  205. if (day < 1 || day > 31)
  206. {
  207. fout << "Error. Invalid Day. ";
  208. valid = false;
  209. }
  210. break;
  211. }
  212. }
  213.  
  214. string Print_Month(int month)
  215. {
  216. switch (month)
  217. {
  218. case 1: return "January";
  219. break;
  220. case 2: return "Feburary";
  221. break;
  222. case 3: return "March";
  223. break;
  224. case 4: return "April";
  225. break;
  226. case 5: return "May";
  227. break;
  228. case 6: return "June";
  229. break;
  230. case 7: return "July";
  231. break;
  232. case 8: return "August";
  233. break;
  234. case 9: return "September";
  235. break;
  236. case 10: return "October";
  237. break;
  238. case 11: return "November";
  239. break;
  240. case 12: return "December";
  241. break;
  242. }
  243. return "";
  244. }
  245.  
  246. int Convert_to_Julian(int month, int day, bool& leap)
  247. {
  248. int counter = 0;
  249. month--;
  250. switch (month)
  251. {
  252. case 11: counter += 30;
  253. case 10: counter += 31;
  254. case 9: counter += 30;
  255. case 8: counter += 31;
  256. case 7: counter += 31;
  257. case 6: counter += 30;
  258. case 5: counter += 31;
  259. case 4: counter += 30;
  260. case 3: counter += 31;
  261. case 2:
  262. if (leap)
  263. {
  264. counter += 29;
  265. }
  266. else
  267. {
  268. counter += 28;
  269. }
  270. case 1:
  271. counter += 31;
  272. break;
  273. }
  274. counter += day;
  275. return counter;
  276. }
  277.  
  278. int Time_Elapsed(int year1, int year2, int julian1, int julian2)
  279. {
  280. int num_days = 0, temp = 0;
  281.  
  282. if (year1 == year2)
  283. {
  284. num_days = abs(julian1 - julian2);
  285. }
  286. else
  287. {
  288. for (year1; year1 < year2; year1++)
  289. {
  290. bool leap = Leap_Year(year1);
  291. if (leap)
  292. {
  293. num_days += 366;
  294. }
  295. else
  296. {
  297. num_days += 365;
  298. }
  299. }
  300. num_days = num_days - julian1 + julian2;
  301. }
  302. return num_days;
  303. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement