Advertisement
aaa213

Datum:prosle generacije

Feb 7th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.12 KB | None | 0 0
  1. /*header fajl DATUM*/
  2. class datum
  3. {
  4. public:
  5. void create (int d,int m,int g);
  6.  
  7. void setDan(int d);
  8. void setMjesec(int m);
  9. void setGodina(int g);
  10.  
  11. int getKonacnodana (int dan2,int mjesec2,int godina2);
  12. int getMjesec_dani (int m);
  13. int getPrestupna ();
  14. int getDani_do_kraja ();
  15. private:
  16. int dan, mjesec, godina;
  17. };
  18. #endif
  19. /*zavrsetak header fajl */
  20. /*.cpp fajl datum_klasa_funkcije.cpp // definisanje operacija klase datum//*/
  21. #include "datum.h"
  22. void datum:: create (int d, int m, int g)
  23. {
  24. dan=d;
  25. mjesec=m;
  26. godina=g;
  27. }
  28. void datum:: setDan(int d)
  29. { dan=d; }
  30. void datum:: setMjesec(int m)
  31. { mjesec=m; }
  32. void datum:: setGodina(int g)
  33. { godina=g; }
  34. int datum:: getMjesec_dani (int m)
  35. {
  36. if (m==4 || m==6 || m==9 || m==11)
  37. return 30;
  38. else
  39. if (m==2)
  40. if (getPrestupna()==366)
  41. return 29;
  42. else
  43. return 28;
  44. else
  45. return 31;
  46. }
  47. int datum:: getPrestupna ()
  48. {
  49. if (godina%4==0)
  50. return 366;
  51. else return 365;
  52. }
  53. int datum:: getDani_do_kraja ()
  54. {
  55. int suma=0;
  56. for (int i=dan+1;i<=getMjesec_dani(mjesec);i++)
  57. suma+=1;
  58. return suma;
  59. }
  60. int datum:: getKonacnodana(int dan2, int mjesec2, int godina2)
  61. {
  62. if (dan==dan2&&mjesec==mjesec2&&godina==godina2)//ako su datumi isti
  63. return 0;
  64. if (mjesec==mjesec2&&godina==godina2)//ako se razlikuju samo dani
  65. return dan2-dan;
  66.  
  67. if (godina==godina2)//ako je samo godina ista
  68. {
  69. int suma=0;
  70. for (int i=mjesec+1;i<mjesec2;i++)
  71. suma+=getMjesec_dani(i);
  72. return getDani_do_kraja()+dan2+suma;
  73. }
  74. else//ako ni godina nije ista
  75. {
  76. int suma_mjesec=0;
  77. for(int i=mjesec+1;i<=12;i++)
  78. suma_mjesec+=getMjesec_dani(i);
  79. for(int i=1;i<mjesec2;i++)
  80. suma_mjesec+=getMjesec_dani(i);
  81. return getDani_do_kraja()+suma_mjesec+dan2;
  82. }
  83. }
  84.  
  85. /*zavrsetak definicija operacija klase DATUM*/
  86. /*GLAVNI PROGRAM ZA TESTIRANJE KLASE DATUM*/
  87. #include <iostream>
  88. #include "datum.h"
  89. using namespace std;
  90.  
  91. int main()
  92. {
  93. datum objekt1;
  94. objekt1.create(27,5,1991);
  95.  
  96. /*testiranje aplikacije*/
  97. cout<<"Isti datumi: "<<objekt1.getKonacnodana(27,5,1991)<<endl;//0
  98. cout<<"Ako je samo razlika u danima [27/5/1991] i [30/5/1991] "<<objekt1.getKonacnodana(30,5,1991)<<endl;
  99. cout<<"Ako je razlika u mjesecima [27/5/1991] i [5/6/1991] "<<objekt1.getKonacnodana(5,6,1991)<<endl;
  100. cout<<"Ako je razlika vise od mjesec dana [27/5/1991] i [30/6/1991] "<<objekt1.getKonacnodana(30,6,1991)<<endl;
  101. objekt1.setMjesec(2);
  102. objekt1.setGodina(1992);
  103. cout<<"Ako se razlika nalazi u prestupnoj godini\n mjesec april [27/2/1992] i [3/3/1992] " <<objekt1.getKonacnodana(3,3,1992)<<endl;
  104. objekt1.setGodina(1991);
  105. cout<<"Ako se razlika nalazi u NE prestupnoj godini\n mjesec april [27/2/1991] i [3/3/1991] " <<objekt1.getKonacnodana(3,3,1991)<<endl;
  106. cout<<"Ako je razlika tacno jedna godina (365 dana) [27/2/1991] i [27/2/1992] "<<objekt1.getKonacnodana(27,2,1992)<<endl;
  107. objekt1.setGodina(1992);
  108. cout<<"Ako je razlika tacno jedna godina (366 dana) [27/2/1992] i [27/2/1993] "<<objekt1.getKonacnodana(27,2,1993)<<endl;
  109. /*ZAVRSETAK TESTIRANJA APLIKACIJE*/
  110. system("pause>null");
  111. return 0;
  112. }
  113. /*ZAVRSETAK GLAVNOG PROGRAMA*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement