24.11.2.24011810. Napisati klasu “Sat“ koja predstavlja digitalni sat. Klasa treba da ima sljedeći interfejs:
Sat();
void Postavi(int sati, int minute, int sekunde);
void Sljedeći();
void Ispisi() const;
Konstruktor treba da kreira sat inicijaliziran na “00:00:00”, dok metoda “Postavi” treba da služi za namještanje tekućeg vremena. Metoda treba da baci izuzetak u slučaju da se zadaju neispravni parametri. Metoda “Sljedeci“ treba da poveća vrijeme zapamćeno u satu za 1 sekundu (npr. ukoliko je tekuće vrijeme “12:48:59”, nakon poziva ove metode vrijeme treba da postane “12:49:00”). Metoda “Ispisi“ treba da ispiše stanje sata u obliku “hh : mm : ss”. Sve eventualno neophodne atribute klase neophodno je definirati kao privatne atribute. Obavezno napisati i testni program u kojem će se upotrebiti napisana klasa.

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
using namespace std;
class Sat{
int h,m,s;
public:
Sat(){
    h=m=s=0;
    }
void Postavi(int sati, int minute, int sekunde);
void Sljedeci();
void Ispisi() const;
}
;
void Sat::Postavi(int sati,int minute,int sekunde){
    if(sati<0||sati>23||minute<0||minute>59||sekunde<0||sekunde>59)
        throw "error u unosu datuma!";
        h=sati;m=minute;s=sekunde;
}
void Sat::Sljedeci(){
    if(s==59){
        s=0;
        if(m==59)m=0;
        else m++;
        if(m==0&&h==23)h=0;
        else if(m==0)h++;
        }
    else s++;
}
void Sat::Ispisi() const{
if(h<10)cout<<"0"<<h;
else cout<<h;
cout<<":";
if(m<10)cout<<"0"<<m;
else cout<<m;
cout<<":";
if(s<10)cout<<"0"<<s;
else cout<<s;
cout<<endl;
}
int main(){
Sat t;
try{
t.Postavi(2,59,59);
t.Sljedeci();
}
catch(const char r[]){
cout<<r;

}
cout<<endl;
t.Ispisi();
getch();
return 0;
}

Ispis na ekranu:

Riješeni zadaci 2    Index