Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- TP 16/17 (Tutorijal 9, Zadatak 3)
- Testove pisao Kenan Ekinovic. Za sva pitanja, sugestije
- i zalbe obratiti se na mail: kekinovic1@etf.unsa.ba
- Vrsit ce se provjera na prepisivanje tutorijala.
- */
- #include <iostream>
- #include <cmath>
- class Vektor3d
- {
- double koordinate[3];
- mutable int x=0;
- public:
- void Postavi(double x,double y,double z) {
- Vektor3d::koordinate[0]=x;
- Vektor3d::koordinate[1]=y;
- Vektor3d::koordinate[2]=z;
- }
- void Ocitaj(double &x, double &y, double &z) const {
- x = Vektor3d::koordinate[0];
- y =Vektor3d::koordinate[1];
- z = Vektor3d::koordinate[2];
- }
- void Ispisi() const {
- std::cout << "{" << koordinate[0] << "," << koordinate[1] << "," << koordinate[2] << "}";
- x=x+1;
- }
- double DajX() const {
- return koordinate[0];
- }
- double DajY() const {
- return koordinate[1];
- }
- double DajZ() const {
- return koordinate[2];
- }
- int DajBrojIspisa() const {
- return x;
- }
- double DajDuzinu() const {
- return sqrt(koordinate[0] * koordinate[0] + koordinate[1] * koordinate[1] + koordinate[2] * koordinate[2]);
- }
- Vektor3d &PomnoziSaSkalarom(double s) {
- koordinate[0] *= s;
- koordinate[1] *= s;
- koordinate[2] *= s;
- return *this;
- }
- Vektor3d &SaberiSa(const Vektor3d &v) {
- koordinate[0] += v.koordinate[0];
- koordinate[1] += v.koordinate[1];
- koordinate[2] += v.koordinate[2];
- return *this;
- }
- void PostaviX(double x) {
- Vektor3d::koordinate[0]=x;
- }
- void PostaviY(double y) {
- Vektor3d::koordinate[1]=y;
- }
- void PostaviZ(double z) {
- Vektor3d::koordinate[2]=z;
- }
- friend Vektor3d ZbirVektora(const Vektor3d &v1, const Vektor3d &v2) {
- Vektor3d v3;
- v3.koordinate[0]=v1.koordinate[0]+v2.koordinate[0];
- v3.koordinate[1]=v1.koordinate[1]+v2.koordinate[1];
- v3.koordinate[2]=v1.koordinate[2]+v2.koordinate[2];
- return v3;
- }
- };
- int main ()
- {
- Vektor3d v1, v2;
- v1.Postavi(3, 4, 2);
- v2.Postavi(2, 0, 5);
- v1.Ispisi();
- v1.Ispisi();
- v1.Ispisi();
- v2.Ispisi();
- v2.Ispisi();
- std::cout << std::endl;
- std::cout << "Objekat v1 je ispisan " << v1.DajBrojIspisa()<< " puta , a objekat v2 " << v2.DajBrojIspisa() << " puta" << std::endl;
- return 0;
- }
- /*
- TP 16/17 (Tutorijal 9, Zadatak 4)
- Testove pisao Kenan Ekinovic. Za sva pitanja, sugestije
- i zalbe obratiti se na mail: kekinovic1@etf.unsa.ba
- Vrsit ce se provjera na prepisivanje tutorijala.
- */
- #include <iostream>
- #include <stdexcept>
- #include <iomanip>
- class Sat
- {
- int sati,minute,sekunde;
- static int PretvoriUSekunde(int h, int m, int s) {
- return h*3600+m*60+s;
- }
- void PretvoriUNormalno (int brojsekundi);
- public:
- static bool DaLiJeIspravno(int h, int m, int s) {
- return (h>=0 && h<=24 && m<=59 && m>=0 && s<=59 && s>=0);
- }
- Sat& Postavi(int h, int m, int s);
- Sat& PostaviNormalizirano(int h, int m, int s);
- Sat& Sljedeci();
- Sat& Prethodni();
- Sat& PomjeriZa(int brojsekundi);
- void Ispisi() const;
- int DajSate() const {
- return sati;
- }
- int DajMinute() const {
- return minute;
- }
- int DajSekunde() const {
- return sekunde;
- }
- friend int BrojSekundiIzmedju(const Sat &sat1, const Sat &sat2);
- static int Razmak(const Sat &sat1, const Sat &sat2);
- };
- int main ()
- {
- Sat sat;
- sat.Postavi(23,59,59);
- sat.Sljedeci();
- sat.Ispisi();
- sat.Prethodni();
- sat.Ispisi();
- sat.PomjeriZa(-15);
- sat.Ispisi();
- std::cout<<sat.DajSate()<<"--"<<sat.DajMinute()<<"--"<<sat.DajSekunde();
- Sat sat2;
- sat2.PostaviNormalizirano(0,0,-15);
- std::cout<<BrojSekundiIzmedju(sat,sat2);
- return 0;
- }
- // Implementacija
- void Sat::PretvoriUNormalno(int brojsekundi)
- {
- if (brojsekundi<0) {
- do {
- brojsekundi+=86400;
- } while(brojsekundi<0);
- }
- brojsekundi=brojsekundi%86400;
- sati=brojsekundi/3600;
- brojsekundi=brojsekundi-sati*3600;
- minute=brojsekundi/60;
- brojsekundi=brojsekundi-minute*60;
- sekunde=brojsekundi;
- }
- Sat& Sat::Postavi(int h, int m, int s)
- {
- if (!DaLiJeIspravno(h,m,s)) throw std::domain_error("Neispravno vrijeme");
- sati=h;
- minute=m;
- sekunde=s;
- return *this;
- }
- Sat& Sat::PostaviNormalizirano(int h, int m, int s)
- {
- PretvoriUNormalno(PretvoriUSekunde(h,m,s));
- return *this;
- }
- Sat& Sat::Sljedeci()
- {
- PretvoriUNormalno(PretvoriUSekunde(sati,minute,sekunde)+1);
- return *this;
- }
- Sat& Sat::Prethodni()
- {
- PretvoriUNormalno(PretvoriUSekunde(sati,minute,sekunde)-1);
- return *this;
- }
- Sat& Sat::PomjeriZa(int brojsekundi)
- {
- PretvoriUNormalno(PretvoriUSekunde(sati,minute,sekunde)+brojsekundi);
- return *this;
- }
- void Sat::Ispisi() const
- {
- std::cout<<std::setw(2)<<std::setfill('0')<<sati<<":"<<std::setw(2)<<minute<<":"<<std::setw(2)<<sekunde;
- }
- int BrojSekundiIzmedju(const Sat &sat1, const Sat &sat2)
- {
- return Sat::PretvoriUSekunde(sat1.sati,sat1.minute,sat1.sekunde)-Sat::PretvoriUSekunde(sat2.sati,sat2.minute,sat2.sekunde);
- }
- int Sat::Razmak(const Sat &sat1, const Sat &sat2)
- {
- return PretvoriUSekunde(sat1.DajSate(),sat1.DajMinute(),sat1.DajSekunde())-PretvoriUSekunde(sat2.DajSate(),sat2.DajMinute(),sat2.DajSekunde());
- }
- ----
- /*
- TP 16/17 (Tutorijal 9, Zadatak 5)
- Testove pisao Kenan Ekinovic. Za sva pitanja, sugestije
- i zalbe obratiti se na mail: kekinovic1@etf.unsa.ba
- Vrsit ce se provjera na prepisivanje tutorijala.
- */
- #include <iostream>
- #include <stdexcept>
- #include <iomanip>
- #include <vector>
- class Sat
- {
- int brojsekundi;
- void KorektanBrojSekundi();
- public:
- static bool DaLiJeIspravno(int h, int m, int s) {
- return (h>=0 && h<24 && m<=59 && m>=0 && s<=59 && s>=0);
- }
- Sat& Postavi(int h, int m, int s);
- Sat& PostaviNormalizirano(int h, int m, int s);
- Sat& Sljedeci();
- Sat& Prethodni();
- Sat& PomjeriZa(int brojsekundi);
- void Ispisi() const;
- int DajSate() const {
- return brojsekundi/3600;
- }
- int DajMinute() const {
- return (brojsekundi-DajSate()*3600)/60;
- }
- int DajSekunde() const {
- return brojsekundi-DajSate()*3600-DajMinute()*60;
- }
- friend int BrojSekundiIzmedju(const Sat &sat1, const Sat &sat2);
- static int Razmak(const Sat &sat1, const Sat &sat2);
- };
- int main ()
- {
- Sat sat;
- sat.Postavi(23,59,59);
- sat.Sljedeci();
- sat.Ispisi();
- sat.Prethodni();
- sat.Ispisi();
- sat.PomjeriZa(-15);
- sat.Ispisi();
- std::cout<<sat.DajSate()<<"--"<<sat.DajMinute()<<"--"<<sat.DajSekunde();
- Sat sat2;
- sat2.PostaviNormalizirano(0,0,-15);
- std::cout<<BrojSekundiIzmedju(sat,sat2);
- return 0;
- }
- // Implementacija
- void Sat::KorektanBrojSekundi()
- {
- if (brojsekundi<0) {
- do {
- brojsekundi+=86400;
- } while(brojsekundi<0);
- }
- brojsekundi%=86400;
- }
- Sat& Sat::Postavi(int h, int m, int s)
- {
- if (!DaLiJeIspravno(h,m,s)) throw std::domain_error("Neispravno vrijeme");
- brojsekundi=3600*h+60*m+s;
- return *this;
- }
- Sat& Sat::PostaviNormalizirano(int h, int m, int s)
- {
- brojsekundi=3600*h+60*m+s;
- KorektanBrojSekundi();
- return *this;
- }
- Sat& Sat::Sljedeci()
- {
- brojsekundi+=1;
- KorektanBrojSekundi();
- return *this;
- }
- Sat& Sat::Prethodni()
- {
- brojsekundi-=1;
- KorektanBrojSekundi();
- return *this;
- }
- Sat& Sat::PomjeriZa(int brojsekundi)
- {
- Sat::brojsekundi+=brojsekundi;
- KorektanBrojSekundi();
- return *this;
- }
- void Sat::Ispisi() const
- {
- std::cout<<std::setw(2)<<std::setfill('0')<<DajSate()<<":"<<std::setw(2)<<DajMinute()<<":"<<std::setw(2)<<DajSekunde();
- }
- int BrojSekundiIzmedju(const Sat &sat1, const Sat &sat2)
- {
- return sat1.brojsekundi-sat2.brojsekundi;
- }
- int Sat::Razmak(const Sat &sat1, const Sat &sat2)
- {
- return sat1.brojsekundi-sat2.brojsekundi;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement