#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;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: