Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- typedef std::vector<std::string> stringvec;
- typedef unsigned long ul;
- typedef signed long sl;
- typedef unsigned int ui;
- struct TDate
- {
- ui year;
- ui month;
- ui day;
- };
- // -----------------------------------------------------------------------------
- // -----------------------------------------------------------------------------
- ul CalcDayNumFromDate(ul y, ul m, ul d)
- {
- m = (m + 9) % 12;
- y -= m / 10;
- ul dn = 365*y + y/4 - y/100 + y/400 + (m*306 + 5)/10 + (d - 1);
- return dn;
- }
- // -----------------------------------------------------------------------------
- // -----------------------------------------------------------------------------
- TDate CalcDateFromDayNum(ul day)
- {
- TDate retval;
- ul y = (10000*day + 14780) / 3652425;
- sl ddd = day - (365*y + y/4 - y/100 + y/400);
- if (ddd < 0) {
- y--;
- ddd = day - (365*y + y/4 + y/100 + y/400);
- }
- ul mi = (100*ddd + 52) / 3060;
- ul mm = (mi + 2) % 12 + 1;
- y += (mi + 2) / 12;
- ul dd = ddd - (mi*306 + 5) / 10 + 1;
- retval.year = y;
- retval.month = mm;
- retval.day = dd;
- return retval;
- }
- // -----------------------------------------------------------------------------
- // -----------------------------------------------------------------------------
- TDate CalcDayAndMonth(ul year, ul day)
- {
- TDate date;
- ul start_day = CalcDayNumFromDate(year, 1, 1);
- date = CalcDateFromDayNum(start_day + day - 1);
- return date;
- }
- // -----------------------------------------------------------------------------
- // -----------------------------------------------------------------------------
- int main(int argc, char **argv)
- {
- std::string year, day;
- std::string month[] =
- {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
- "Aug", "Sep", "Oct", "Nov", "Dec"};
- std::cout << "Enter the year (YYYY): ";
- getline(std::cin, year);
- std::cout << "Enter the day (between 0 and 365): ";
- getline(std::cin, day);
- TDate date = CalcDayAndMonth(std::atoi(year.c_str()), std::atoi(day.c_str()));
- std::cout << "Month: " << month[date.month - 1]
- << ", Day: " << date.day << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement