Advertisement
Guest User

TUTORIJAL 12 zad2

a guest
May 25th, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdexcept>
  3. using namespace std;
  4.  
  5. class Sat{
  6. int sati, minute, sekunde;
  7. public:
  8. Sat(int sati, int minute, int sekunde);
  9. friend Sat operator++(Sat &s);
  10. friend Sat operator--(Sat &s);
  11. friend Sat operator++(Sat &s, int);
  12. friend Sat operator--(Sat &s, int);
  13. friend Sat operator+=(Sat &s, int pomak);
  14. friend std::ostream &operator <<(std::ostream &tok, const Sat &v)
  15. {
  16. tok<<"("<<v.sati<<", "<<v.minute<<", "<<v.sekunde<<")";
  17. return tok;
  18. }
  19. friend int BrojSekundiIzmedju(const Sat &s1, const Sat &s2);
  20. };
  21.  
  22. Sat::Sat(int sati, int minute, int sekunde) {
  23. if((sati < 0 || sati > 23) || (minute < 0 || minute > 59) || (sekunde < 0 || sekunde > 59))
  24. throw std::domain_error("Vrijeme je pogresno zadano!");
  25. this -> sati = sati; this -> minute = minute; this -> sekunde = sekunde;}
  26.  
  27. Sat operator++(Sat &s){if(s.sekunde==59 && s.minute==59 && s.sati==23) {s.sati=0; s.minute=0; s.sekunde=0;}
  28. else if(s.sekunde==59 && s.minute==59 && s.sati!=23) {s.sati++; s.minute=0; s.sekunde=0;}
  29. else if(s.minute!=59 && s.sekunde==59) {s.minute++; s.sekunde=0;}
  30. else if(s.sekunde!=59 && s.minute!=59) s.sekunde++; return s;}
  31.  
  32. Sat operator--(Sat &s){ if(s.sekunde==0 && s.minute==0 && s.sati==0) {s.sati=23; s.minute=59; s.sekunde=59;}
  33. else if(s.sekunde==0 && s.minute==0) {s.sati--; s.minute=59; s.sekunde=59;}
  34. else if(s.sekunde==0 && s.minute!=0) {s.sekunde=59;}
  35. else if(s.minute!=59 && s.sekunde==59) {s.sekunde--;}
  36. else if(s.sekunde!=59 && s.minute!=59) {s.sekunde--;} return s;}
  37.  
  38. Sat operator--(Sat &s, int){ Sat pomocni(s);
  39. if(s.sekunde==0 && s.minute==0 && s.sati==0) {s.sati=23; s.minute=59; s.sekunde=59;}
  40. else if(s.sekunde==0 && s.minute==0) {s.sati--; s.minute=59; s.sekunde=59;}
  41. else if(s.sekunde==0 && s.minute!=0) {s.sekunde=59;}
  42. else if(s.minute!=59 && s.sekunde==59) {s.sekunde--;}
  43. else if(s.sekunde!=59 && s.minute!=59) {s.sekunde--;} return pomocni;}
  44. Sat operator++(Sat &s, int){ Sat pomocni(s);
  45. if(s.sekunde==59 && s.minute==59 && s.sati==23) {s.sati=0; s.minute=0; s.sekunde=0;}
  46. else if(s.sekunde==59 && s.minute==59 && s.sati!=23) {s.sati++; s.minute=0; s.sekunde=0;}
  47. else if(s.minute!=59 && s.sekunde==59) {s.minute++; s.sekunde=0;}
  48. else if(s.sekunde!=59 && s.minute!=59) s.sekunde++;
  49. return pomocni;}
  50.  
  51.  
  52. Sat operator+=(Sat &s, int pomak){ int sek = s.sekunde + pomak;
  53. if(sek > 59 && s.minute==59) {s.sati++; s.minute=0; s.sekunde=sek-59;}
  54. else if(sek > 59 && s.minute!=59) {s.minute++; s.sekunde=sek-59;}
  55. else if(sek < 59 && s.minute!=59) {s.sekunde+=pomak;}
  56. return s;}
  57.  
  58.  
  59. int BrojSekundiIzmedju(const Sat &s1, const Sat &s2) {
  60. int prvo_vrijeme = s1.sati * 3600 + s1.minute * 60 + s1.sekunde;
  61. int drugo_vrijeme = s2.sati * 3600 + s2.minute * 60 + s2.sekunde;
  62. return prvo_vrijeme - drugo_vrijeme;
  63. }
  64.  
  65. int main()
  66. {
  67.  
  68. try{
  69. Sat s(12,20,15);
  70. cout<<s<<endl;
  71. ++s;
  72. s--;
  73. cout<<s;
  74. s+=12;
  75. cout<<s<<endl;
  76. }
  77. catch(std::domain_error izuzetak){cout<<izuzetak.what()<<endl;}
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement