Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- static int check_date (int d, int m, int y)
- {
- if (!d || !m || !y)
- return 1;
- if (d < 0 || m < 0 || y < 0)
- {
- printf ("%d %d %d: wrong date\n", d, m, y);
- return 2;
- }
- return 0;
- }
- static int leap_year (int y)
- {
- return (y % 400 == 0) || (y % 4 == 0 && y % 100 != 0);
- }
- static int days_in_year (int y)
- {
- return leap_year (y) ? 366 : 365;
- }
- static int days_between_years (int y1, int y2)
- {
- int i;
- int days = 0;
- for (i = y1; i < y2; i++)
- days += days_in_year (i);
- return days;
- }
- static int days_from_jan1 (int d, int m, int y)
- {
- int days = 0;
- switch (m) {
- case 12: days += 30;
- case 11: days += 31;
- case 10: days += 30;
- case 9: days += 31;
- case 8: days += 31;
- case 7: days += 30;
- case 6: days += 31;
- case 5: days += 30;
- case 4: days += 31;
- case 3: days += leap_year (y) ? 29 : 28;
- case 2: days += 31;
- case 1: break;
- }
- return days + d;
- }
- int main (void)
- {
- int m1, d1, y1, m2, d2, y2;
- int t1, t2;
- int days1, days2, total;
- if (scanf ("%d%d%d%d%d%d", &d1, &m1, &y1, &d2, &m2, &y2) != 6)
- {
- printf("Wrong data\n");
- return 1;
- }
- t1 = check_date (d1, m1, y1);
- t2 = check_date (d2, m2, y2);
- if (!(t1 && t2))
- {
- printf("Wrong data\n");
- return 1;
- }
- days1 = days_from_jan1 (d1, m1, y1);
- days2 = days_from_jan1 (d2, m2, y2);
- total = days_between_years (y1, y2) + (days2 - days1);
- printf ("Days between dates: %d, weeks between days: %d\n",
- total, total / 7);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement