#include <iostream>
#include<stdexcept>
class Sat {
    
    int sat = 0, minute = 0, sekunde = 0;


    public: 
    Sat() : sat(0), minute(0), sekunde(0) {}
    Sat(int sat, int minute, int sekunde) { PostaviNormalizirano(sat, minute, sekunde);}
    static bool DaLiJeIspravno(int sat, int minute, int sekunde)
    {if(sat<0 || sat >23 || minute < 0 || minute > 59 || sekunde < 0 || sekunde > 59)
       return false;
    return true;}

    Sat &Postavi (int sat, int minute, int sekunde);
    Sat &PostaviNormalizirano (int sat, int minute, int sekunde);
    Sat &operator ++(){return operator +=(1);};
    Sat operator ++(int){ Sat stari=*this; operator++(); return stari;};
    Sat &operator --(){return operator +=(-1);};
    Sat operator --(int){Sat stari=*this; operator--(); return stari;};

    Sat &operator -=(int pomak){return operator += (-pomak);};
   
    Sat &operator +=(int pomak){return PostaviNormalizirano(sat, minute, sekunde + pomak);};
    Sat operator +(int pomak){return {sat, minute, sekunde + pomak};}
    Sat operator -(int pomak){return {sat, minute, sekunde - pomak};}





    friend std::ostream &operator <<(std::ostream tok, const Sat &s);
    int DajSate() const { return sat; }
    int DajMinute() const { return minute; }
    int DajSekunde() const { return sekunde; }
    friend int operator -(const Sat &s1, const Sat &s2);
   
};



Sat &Sat::Postavi(int sat, int minute, int sekunde){
    if(!DaLiJeIspravno(sat, minute, sekunde)) throw std::domain_error("Neispravno vrijeme");
    Sat::sat = sat; Sat::minute = minute; Sat::sekunde = sekunde;
    return *this;
}

Sat &Sat::PostaviNormalizirano(int sat, int minute, int sekunde){
minute += sekunde / 60; sekunde %= 60; 
sat += minute / 60; minute %= 60; 
sat %= 24; 
if(sekunde < 0) sekunde += 60, minute--; 
if(minute < 0) minute += 60, sat--; 
if(sat < 0) sat += 24; 
Sat::sat = sat; Sat::minute = minute; Sat::sekunde = sekunde; 
return *this;  
}



 std::ostream &operator <<(std::ostream &tok, const Sat &s){
if(s.DajSate() < 10) tok << "0"; 
tok << s.DajSate() << ":"; 
if(s.DajMinute() < 10) tok << "0"; 
tok << s.DajMinute() << ":"; 
if(s.DajSekunde() < 10) tok << "0"; 
tok << s.DajSekunde(); 
     return tok;
}

int operator -(const Sat &s1, const Sat &s2){
    int u1 = s1.DajSate() * 3600 + s1.DajMinute()*60 + s1.DajSekunde();
    int u2 = s2.DajSate() * 3600 + s2.DajMinute()*60 + s2.DajSekunde();
    return u1 - u2;
    
}






int main() {
    std::cout << "Hello world!" << std::endl;

    Sat s;
    s.Postavi(20, 15, 51);

    std::cout<< std::endl;

    std::cout<< std::endl;
    Sat s1;
    s1.PostaviNormalizirano(3669, 400, 79);
    std::cout<< std::endl;
    



    
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: