Advertisement
Guest User

Untitled

a guest
Mar 5th, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. #include <stdio.h>
  2. static int check_date (int d, int m, int y)
  3. {
  4.  if (!d || !m || !y)
  5.  return 1;
  6.  if (d < 0 || m < 0 || y < 0)
  7.  {
  8.  printf ("%d %d %d: wrong date\n", d, m, y);
  9.  return 2;
  10.  }
  11.  return 0;
  12. }
  13.  
  14. static int leap_year (int y)
  15. {
  16.  return (y % 400 == 0) || (y % 4 == 0 && y % 100 != 0);
  17. }
  18.  
  19. static int days_in_year (int y)
  20. {
  21.  return leap_year (y) ? 366 : 365;
  22. }
  23.  
  24. static int days_between_years (int y1, int y2)
  25. {
  26.  int i;
  27.  int days = 0;
  28.  for (i = y1; i < y2; i++)
  29.  days += days_in_year (i);
  30.  return days;
  31. }
  32.  
  33. static int days_from_jan1 (int d, int m, int y)
  34. {
  35.  int days = 0;
  36.  switch (m) {
  37.  case 12: days += 30;
  38.  case 11: days += 31;
  39.  case 10: days += 30;
  40.  case 9: days += 31;
  41.  case 8: days += 31;
  42.  case 7: days += 30;
  43.  case 6: days += 31;
  44.  case 5: days += 30;
  45.  case 4: days += 31;
  46.  case 3: days += leap_year (y) ? 29 : 28;
  47.  case 2: days += 31;
  48.  case 1: break;
  49.  }
  50.  return days + d;
  51. }
  52.  
  53. int main (void)
  54. {
  55.  int m1, d1, y1, m2, d2, y2;
  56.  int t1, t2;
  57.  int days1, days2, total;
  58.  if (scanf ("%d%d%d%d%d%d", &d1, &m1, &y1, &d2, &m2, &y2) != 6)
  59.  {
  60.      printf("Wrong data\n");
  61.      return 1;
  62.  }
  63.  t1 = check_date (d1, m1, y1);
  64.  t2 = check_date (d2, m2, y2);
  65.  if (!(t1 && t2))
  66.  {
  67.      printf("Wrong data\n");
  68.      return 1;
  69.  }
  70.  days1 = days_from_jan1 (d1, m1, y1);
  71.  days2 = days_from_jan1 (d2, m2, y2);
  72.  total = days_between_years (y1, y2) + (days2 - days1);
  73.  printf ("Days between dates: %d, weeks between days: %d\n",
  74.  total, total / 7);
  75.  }
  76.  return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement