/* * Converts year of century (since 1900) to date. */ #include void main() { long int century_days; int four_year_sets, jul_date, year_quo, year, month, day, year_mod, mo_ent[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; do { printf("Enter day of century -> "); fflush(stdout); scanf("%ld", ¢ury_days); if (century_days < 0) printf("Positive values only \a\n"); } while (century_days < 0); four_year_sets = century_days / 1461; /*No days in 4 years*/ year_mod = century_days % 1461; switch (year_mod) { case 1154 : { /*Leap year day*/ month = 2; day = 29; year = 1904 + 4 * four_year_sets; break; } case 1460 : { /*Dec 31 of a leap year*/ month = 12; day = 31; year = 1904 + 4 * four_year_sets; break; } default: { year_quo = year_mod / 365; jul_date = year_mod % 365; year = 1901 + 4 * four_year_sets + year_quo; if (year_mod < 1154) jul_date++; for (month=1; jul_date > mo_ent[month - 1]; month++) jul_date -= mo_ent[month - 1]; day = jul_date; } } /* End of switch */ printf("Day %ld is the date %d/%d/%d\n", century_days, month, day, year); }