Advertisement
naskedvi

T12 - zad.2.

Jun 6th, 2014
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <stdexcept>
  4. #include <iomanip>
  5.  
  6. class Sat
  7. {
  8.     int sati, minute, sekunde;
  9.     public:
  10.     Sat(int sati, int minute, int sekunde) { Postavi(sati, minute, sekunde);}
  11.     void Postavi(int sati, int minute, int sekunde);
  12.     int DajSate() const { return sati; };
  13.     int DajMinute() const { return minute; };
  14.     int DajSekunde() const { return sekunde; };
  15.     friend std::ostream &operator << (std::ostream &tok, const Sat& satic);
  16.     Sat &operator+=(int pomak);
  17.     Sat &operator++();
  18.     Sat operator++(int);
  19.  
  20. };
  21.  
  22. void Sat::Postavi(int sati, int minute, int sekunde)
  23. {
  24.     if(sekunde>=60 || minute>=60 || sati>24)
  25.         throw std::domain_error("Neispravan unos");
  26.     this->sati=sati; this->minute=minute; this->sekunde=sekunde;
  27. }
  28.  
  29. std::ostream &operator <<(std::ostream &tok, const Sat& satic){
  30.         tok << std::setw(2) << std::setfill('0')<<satic.sati<<":"
  31.             << std::setw(2) << std::setfill('0')<<satic.minute<<":"
  32.             <<std::setw(2) << std::setfill('0')<<satic.sekunde<<std::endl;}
  33.  
  34. Sat &Sat::operator+=(int pomak)
  35. {
  36.     sekunde+=pomak;
  37.     if (sekunde>59) while(sekunde>59) {sekunde-=60; minute++;}
  38.     if (minute>59) while(minute>59) {minute-=60; sati++;}
  39.     if (sati>23) sati=0;
  40.     return *this;
  41. }
  42.  
  43. Sat &Sat::operator++()
  44. {
  45.     sekunde++;
  46.     if (sekunde>59) while(sekunde>59) {sekunde-=60; minute++;}
  47.     if (minute>59) while(minute>59) {minute-=60; sati++;}
  48.     if (sati>23) sati=0;
  49.     return *this;
  50. }
  51.  
  52. Sat Sat::operator++(int)
  53. {
  54.     Sat pomocni(*this);
  55.     sekunde++;
  56.     if (sekunde>59) while(sekunde>59) {sekunde-=60; minute++;}
  57.     if (minute>59) while(minute>59) {minute-=60; sati++;}
  58.     if (sati>23) sati=0;
  59.     return pomocni;
  60. }
  61.  
  62. int main(){
  63. Sat satic(23,59,59); std::cout<<satic;
  64. satic+=1; std::cout<<satic;
  65. satic++; std::cout<<satic;
  66. ++satic+=1; std::cout<<satic++;
  67. std::cout<<satic;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement