Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdexcept>
- using namespace std;
- class Sat{
- int sati, minute, sekunde;
- public:
- Sat(int sati, int minute, int sekunde);
- friend Sat operator++(Sat &s);
- friend Sat operator--(Sat &s);
- friend Sat operator++(Sat &s, int);
- friend Sat operator--(Sat &s, int);
- friend Sat operator+=(Sat &s, int pomak);
- friend std::ostream &operator <<(std::ostream &tok, const Sat &v)
- {
- tok<<"("<<v.sati<<", "<<v.minute<<", "<<v.sekunde<<")";
- return tok;
- }
- friend int BrojSekundiIzmedju(const Sat &s1, const Sat &s2);
- };
- Sat::Sat(int sati, int minute, int sekunde) {
- if((sati < 0 || sati > 23) || (minute < 0 || minute > 59) || (sekunde < 0 || sekunde > 59))
- throw std::domain_error("Vrijeme je pogresno zadano!");
- this -> sati = sati; this -> minute = minute; this -> sekunde = sekunde;}
- Sat operator++(Sat &s){if(s.sekunde==59 && s.minute==59 && s.sati==23) {s.sati=0; s.minute=0; s.sekunde=0;}
- else if(s.sekunde==59 && s.minute==59 && s.sati!=23) {s.sati++; s.minute=0; s.sekunde=0;}
- else if(s.minute!=59 && s.sekunde==59) {s.minute++; s.sekunde=0;}
- else if(s.sekunde!=59 && s.minute!=59) s.sekunde++; return s;}
- Sat operator--(Sat &s){ if(s.sekunde==0 && s.minute==0 && s.sati==0) {s.sati=23; s.minute=59; s.sekunde=59;}
- else if(s.sekunde==0 && s.minute==0) {s.sati--; s.minute=59; s.sekunde=59;}
- else if(s.sekunde==0 && s.minute!=0) {s.sekunde=59;}
- else if(s.minute!=59 && s.sekunde==59) {s.sekunde--;}
- else if(s.sekunde!=59 && s.minute!=59) {s.sekunde--;} return s;}
- Sat operator--(Sat &s, int){ Sat pomocni(s);
- if(s.sekunde==0 && s.minute==0 && s.sati==0) {s.sati=23; s.minute=59; s.sekunde=59;}
- else if(s.sekunde==0 && s.minute==0) {s.sati--; s.minute=59; s.sekunde=59;}
- else if(s.sekunde==0 && s.minute!=0) {s.sekunde=59;}
- else if(s.minute!=59 && s.sekunde==59) {s.sekunde--;}
- else if(s.sekunde!=59 && s.minute!=59) {s.sekunde--;} return pomocni;}
- Sat operator++(Sat &s, int){ Sat pomocni(s);
- if(s.sekunde==59 && s.minute==59 && s.sati==23) {s.sati=0; s.minute=0; s.sekunde=0;}
- else if(s.sekunde==59 && s.minute==59 && s.sati!=23) {s.sati++; s.minute=0; s.sekunde=0;}
- else if(s.minute!=59 && s.sekunde==59) {s.minute++; s.sekunde=0;}
- else if(s.sekunde!=59 && s.minute!=59) s.sekunde++;
- return pomocni;}
- Sat operator+=(Sat &s, int pomak){ int sek = s.sekunde + pomak;
- if(sek > 59 && s.minute==59) {s.sati++; s.minute=0; s.sekunde=sek-59;}
- else if(sek > 59 && s.minute!=59) {s.minute++; s.sekunde=sek-59;}
- else if(sek < 59 && s.minute!=59) {s.sekunde+=pomak;}
- return s;}
- int BrojSekundiIzmedju(const Sat &s1, const Sat &s2) {
- int prvo_vrijeme = s1.sati * 3600 + s1.minute * 60 + s1.sekunde;
- int drugo_vrijeme = s2.sati * 3600 + s2.minute * 60 + s2.sekunde;
- return prvo_vrijeme - drugo_vrijeme;
- }
- int main()
- {
- try{
- Sat s(12,20,15);
- cout<<s<<endl;
- ++s;
- s--;
- cout<<s;
- s+=12;
- cout<<s<<endl;
- }
- catch(std::domain_error izuzetak){cout<<izuzetak.what()<<endl;}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement