Advertisement
Guest User

Untitled

a guest
Aug 30th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. typedef std::vector<std::string> stringvec;
  5. typedef unsigned long ul;
  6. typedef signed long sl;
  7. typedef unsigned int ui;
  8.  
  9. struct TDate
  10. {
  11.   ui year;
  12.   ui month;
  13.   ui day;
  14. };
  15.  
  16. // -----------------------------------------------------------------------------
  17. // -----------------------------------------------------------------------------
  18. ul CalcDayNumFromDate(ul y, ul m, ul d)
  19. {
  20.   m = (m + 9) % 12;
  21.   y -= m / 10;
  22.   ul dn = 365*y + y/4 - y/100 + y/400 + (m*306 + 5)/10 + (d - 1);
  23.   return dn;
  24. }
  25.  
  26. // -----------------------------------------------------------------------------
  27. // -----------------------------------------------------------------------------
  28. TDate CalcDateFromDayNum(ul day)
  29. {
  30.   TDate retval;
  31.  
  32.   ul y = (10000*day + 14780) / 3652425;
  33.   sl ddd = day - (365*y + y/4 - y/100 + y/400);
  34.   if (ddd < 0) {
  35.     y--;
  36.     ddd = day - (365*y + y/4 + y/100 + y/400);
  37.   }
  38.  
  39.   ul mi = (100*ddd + 52) / 3060;
  40.   ul mm = (mi + 2) % 12 + 1;
  41.   y += (mi + 2) / 12;
  42.   ul dd = ddd - (mi*306 + 5) / 10 + 1;
  43.  
  44.   retval.year = y;
  45.   retval.month = mm;
  46.   retval.day = dd;
  47.  
  48.   return retval;
  49. }
  50.  
  51. // -----------------------------------------------------------------------------
  52. // -----------------------------------------------------------------------------
  53. TDate CalcDayAndMonth(ul year, ul day)
  54. {
  55.   TDate date;
  56.  
  57.   ul start_day = CalcDayNumFromDate(year, 1, 1);
  58.   date = CalcDateFromDayNum(start_day + day - 1);
  59.  
  60.   return date;
  61. }
  62.  
  63. // -----------------------------------------------------------------------------
  64. // -----------------------------------------------------------------------------
  65. int main(int argc, char **argv)
  66. {
  67.   std::string year, day;
  68.  
  69.   std::string month[] =
  70.       {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
  71.        "Aug", "Sep", "Oct", "Nov", "Dec"};
  72.  
  73.   std::cout << "Enter the year (YYYY): ";
  74.   getline(std::cin, year);
  75.   std::cout << "Enter the day (between 0 and 365): ";
  76.   getline(std::cin, day);
  77.  
  78.   TDate date = CalcDayAndMonth(std::atoi(year.c_str()), std::atoi(day.c_str()));
  79.  
  80.   std::cout << "Month: " << month[date.month - 1]
  81.             << ", Day: " << date.day << std::endl;
  82.  
  83.   return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement