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
|
|