File: Stare vježbe/vjezbe03/22__switch_2.c

  1. /*
  2.   22__switch_2.c
  3.   Malo naprednije koristenje switch naredbe
  4.   -----
  5.   Program racuna koliko je dana proteklo od pocetka nove ere
  6.   do unesenog datuma
  7. */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11.  
  12. int main()
  13. {
  14. int dan, mjesec, godina;
  15. long n_dana;
  16. int prijestupna, n_prijestupnih_dana;
  17.  
  18. printf("Unesite dan, mjesec i godinu: ");
  19. scanf("%d %d %d", &dan, &mjesec, &godina);
  20.  
  21. prijestupna = godina%4==0 && godina%100!=0 || godina%400==0;
  22. n_prijestupnih_dana = (godina+3)/4 - 1 - godina/100 + godina/400;
  23. n_dana = (long) (godina-1) * 365;
  24. n_dana += n_prijestupnih_dana;
  25.  
  26. switch (mjesec)
  27. {
  28. case 12:
  29. n_dana +=30;
  30. case 11:
  31. n_dana +=31;
  32. case 10:
  33. n_dana +=30;
  34. case 9:
  35. n_dana +=31;
  36. case 8:
  37. n_dana +=31;
  38. case 7:
  39. n_dana +=30;
  40. case 6:
  41. n_dana +=31;
  42. case 5:
  43. n_dana +=30;
  44. case 4:
  45. n_dana +=31;
  46. case 3:
  47. n_dana +=(prijestupna ? 29 : 28);
  48. case 2:
  49. n_dana +=31;
  50. case 1: break;
  51. default: printf("Nepostojeci mjesec\n");
  52. exit(0);
  53. }
  54. n_dana+=dan-1;
  55.  
  56. printf("Broj dana proteklih od pocetka nove ere = %ld\n", n_dana);
  57.  
  58. return 0;
  59. }
  60.