Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include<exception>
- #include<algorithm>
- using namespace std;
- template<class T1, class T2, int max>
- class Kolekcija {
- T1* _elementi1[max];
- T2* _elementi2[max];
- int _trenutno;
- public:
- Kolekcija()
- {
- for (int i = 0; i < max; i++)
- {
- _elementi1[i] = nullptr;
- _elementi2[i] = nullptr;
- }
- _trenutno = 0;
- }
- Kolekcija(const Kolekcija& k)
- {
- for (int i = 0; i < max; i++)
- {
- if (i < k._trenutno)
- {
- _elementi1[i] = new T1(*k._elementi1[i]);
- _elementi2[i] = new T2(*k._elementi2[i]);
- }
- else
- {
- _elementi1[i] = nullptr;
- _elementi2[i] = nullptr;
- }
- }
- _trenutno = k._trenutno;
- }
- ~Kolekcija()
- {
- for (int i = 0; i < _trenutno; i++)
- {
- delete _elementi1[i];
- _elementi1[i] = nullptr;
- delete _elementi2[i];
- _elementi2[i] = nullptr;
- }
- }
- Kolekcija & operator=(const Kolekcija & obj) {
- if (this == &obj) return *this;
- this->~Kolekcija();
- _trenutno = obj._trenutno;
- for (int i = 0; i < obj._trenutno; i++)
- {
- _elementi1[i] = new T1(*obj._elementi1[i]);
- _elementi2[i] = new T2(*obj._elementi2[i]);
- }
- }
- bool Dodaj(const T1& el1, const T2& el2)
- {
- if (_trenutno == max)
- return false;
- _elementi1[_trenutno] = new T1(el1);
- _elementi2[_trenutno] = new T2(el2);
- _trenutno++;
- return true;
- }
- void RemoveLokacija(int lokacija) {
- for (int i = 0; i < _trenutno; i++)
- {
- if (i == lokacija) {
- for (int j= i+1; j< _trenutno; j++)
- {
- swap(_elementi1[j], _elementi1[j - 1]);
- swap(_elementi2[j], _elementi2[j - 1]);
- }
- }
- }
- delete _elementi1[_trenutno - 1]; _elementi1[_trenutno - 1] = nullptr;
- delete _elementi2[_trenutno - 1]; _elementi2[_trenutno - 1] = nullptr;
- _trenutno--;
- }
- void Remove(T1 & el1, T2 & el2) {
- for (int i = 0; i < _trenutno; i++)
- {
- if (*_elementi1[i]==el1 && *_elementi2[i]==el2) {
- for (int j = i + 1; j< _trenutno; j++)
- {
- swap(_elementi1[j], _elementi1[j - 1]);
- swap(_elementi2[j], _elementi2[j - 1]);
- }
- }
- }
- delete _elementi1[_trenutno - 1]; _elementi1[_trenutno - 1] = nullptr;
- delete _elementi2[_trenutno - 1]; _elementi2[_trenutno - 1] = nullptr;
- _trenutno--;
- }
- T1& GetElement1(int index)
- {
- if (index >= 0 && index < _trenutno)
- return *_elementi1[index];
- throw exception("Vrijednost indeksa nije validna.");
- }
- T2& GetElement2(int index)
- {
- if (index >= 0 && index < _trenutno)
- return *_elementi2[index];
- throw exception("Vrijednost indeksa nije validna.");
- }
- int GetTrenutno()const { return _trenutno; }
- friend ostream& operator<<<>(ostream & cout, const Kolekcija<T1, T2, max> & obj);
- };
- template<class T1, class T2, int max>
- ostream& operator<<<>(ostream & cout, const Kolekcija<T1, T2, max> & obj) {
- for (int i = 0; i < obj._trenutno; i++)
- {
- cout << *obj._elementi1[i] << " " << *obj._elementi2[i] << endl;
- }
- return cout;
- }
- class Uplata {
- char* _datum;
- double _iznos;
- public:
- Uplata(char* datum="------", double iznos=0)
- {
- int vel = strlen(datum) + 1;
- _datum = new char[vel];
- strcpy_s(_datum, vel, datum);
- _iznos = iznos;
- }
- Uplata(const Uplata & obj)
- {
- int vel = strlen(obj._datum) + 1;
- _datum = new char[vel];
- strcpy_s(_datum, vel, obj._datum);
- _iznos = obj._iznos;
- }
- Uplata & operator=(const Uplata & obj) {
- if (this == &obj) return *this;
- this->~Uplata();
- int vel = strlen(obj._datum) + 1;
- _datum = new char[vel];
- strcpy_s(_datum, vel, obj._datum);
- }
- ~Uplata()
- {
- delete[] _datum;
- _datum = nullptr;
- }
- char * getDatum() { return _datum; }
- double getIznos() { return _iznos; }
- friend ostream& operator<<(ostream&, const Uplata&);
- };
- ostream& operator<<(ostream& cout, const Uplata& u)
- {
- cout << "Datum uplate: " << u._datum << endl;
- cout << "Iznos: " << u._iznos << endl;
- return cout;
- }
- class Oprema
- {
- string _naziv;
- string* _proizvodjac;
- double _cijena;
- int _dostupnoNaStanju;
- public:
- //Konstruktor i destruktor
- Oprema(string naziv="------", string proizvodjac="------", double cijena=0, int dostupno=0) {
- _naziv = naziv;
- _proizvodjac = new string(proizvodjac);
- _cijena = cijena;
- _dostupnoNaStanju = dostupno;
- }
- Oprema(const Oprema & obj){
- _naziv = obj._naziv;
- _proizvodjac = new string(*obj._proizvodjac);
- _cijena = obj._cijena;
- _dostupnoNaStanju = obj._dostupnoNaStanju;
- }
- ~Oprema() {
- delete _proizvodjac; _proizvodjac = nullptr;
- }
- Oprema& operator=(const Oprema & obj) {
- if (this == &obj) return *this;
- this->~Oprema();
- _naziv = obj._naziv;
- _proizvodjac = new string(*obj._proizvodjac);
- _cijena = obj._cijena;
- _dostupnoNaStanju = obj._dostupnoNaStanju;
- }
- bool operator==(const Oprema & obj) {
- if (_naziv == obj._naziv && *_proizvodjac == *obj._proizvodjac && _cijena == obj._cijena && _dostupnoNaStanju == obj._dostupnoNaStanju)
- return true;
- return false;
- }
- Oprema & operator++() {
- ++_dostupnoNaStanju;
- return *this;
- }
- Oprema & operator--() {
- --_dostupnoNaStanju;
- return *this;
- }
- //Osnovne funkcije za rad sa klasom
- string getNaziv() { return _naziv; }
- string getProizvodjac() { return *_proizvodjac; }
- double getCijena() { return _cijena; }
- int getDostupnoNaStanju() { return _dostupnoNaStanju; }
- friend ostream & operator<<(ostream & cout, const Oprema & obj);
- };
- ostream & operator<<(ostream & cout, const Oprema & obj) {
- cout << "OPREMA: " << obj._naziv << endl;
- cout << "Proizvodjac: " << *obj._proizvodjac << endl;
- cout << "Cijena: " << obj._cijena << endl;
- cout << "Dostupno na stanju: " << obj._dostupnoNaStanju << endl;
- return cout;
- }
- class Ucenik
- {
- string _imePrezime;
- int _godiste;
- bool _posjedujeOpremu;
- vector<Oprema>* _iznajmljenaOprema; //Trenutno iznajmljena oprema
- Kolekcija<Uplata, string, 100> _uplate; //Drugi parametar tipa string predstavlja svrhu uplate: trening ili oprema
- public:
- Ucenik(string imePrezime="-----", int godiste=0, bool posjedujeOpremu = false)
- {
- //Konstruktor dopuniti po potrebi
- _imePrezime = imePrezime;
- _godiste = godiste;
- _posjedujeOpremu = posjedujeOpremu;
- _iznajmljenaOprema = new vector<Oprema>;
- }
- Ucenik(const Ucenik & obj)
- {
- _imePrezime = obj._imePrezime;
- _godiste = obj._godiste;
- _posjedujeOpremu = obj._posjedujeOpremu;
- _iznajmljenaOprema = new vector<Oprema>(*obj._iznajmljenaOprema);
- _uplate = obj._uplate;
- }
- Ucenik & operator=(const Ucenik & obj) {
- if (this == &obj) return *this;
- this->~Ucenik();
- _imePrezime = obj._imePrezime;
- _godiste = obj._godiste;
- _posjedujeOpremu = obj._posjedujeOpremu;
- _iznajmljenaOprema = new vector<Oprema>(*obj._iznajmljenaOprema);
- _uplate = obj._uplate;
- }
- //Destruktor
- ~Ucenik() {
- delete _iznajmljenaOprema; _iznajmljenaOprema = nullptr;
- }
- //Preklopljeni operator+= za evidenciju iznajmljene opreme.
- Ucenik & operator+=(Oprema & oprema) {
- for (int i = 0; i <_iznajmljenaOprema->size(); i++)
- {
- if ((*_iznajmljenaOprema)[i] == oprema)
- throw exception("Oprema vec dodana za ucenika!");
- }
- --oprema;
- _iznajmljenaOprema->push_back(oprema);
- _posjedujeOpremu = true;
- return *this;
- }
- //Preklopljeni operator-= za uklanjanje opreme kada se vrati.
- Ucenik & operator-=(Oprema & oprema) {
- for (int i = 0; i < _iznajmljenaOprema->size(); i++)
- {
- if ((*_iznajmljenaOprema)[i] == oprema) {
- ++oprema;
- _iznajmljenaOprema->erase(_iznajmljenaOprema->begin() + i);
- if (_iznajmljenaOprema->size() == 0)
- _posjedujeOpremu = false;
- return *this;
- }
- }
- throw exception("Oprema nije pronadjena!");
- }
- //Funkciju za dodavanje uplata.
- void DodajUplatu(Uplata & uplata, string svrha) {
- if (_uplate.GetTrenutno() == 100)
- throw exception("Upravo ste postali nas zlatni clan!");
- if (uplata.getIznos() <= 0 || svrha != "trening" || svrha != "oprema")
- throw exception("Naznacite pravinu svrhu!");
- _uplate.Dodaj(uplata, svrha);
- }
- bool operator==(const Ucenik & obj) {
- if (_imePrezime == obj._imePrezime && _godiste == obj._godiste)
- return true;
- return false;
- }
- bool operator<(const Ucenik & obj) {
- if (_godiste < obj._godiste)
- return true;
- return false;
- }
- string getImePrezime() const { return _imePrezime; }
- int getGodiste() const { return _godiste; }
- bool posjedujeOpremu() const { return _posjedujeOpremu; }
- vector<Oprema>* getIznajmljenaOprema() const { return _iznajmljenaOprema; }
- Kolekcija<Uplata, string, 100> & getUplate() { return _uplate; }
- friend ostream& operator<<(ostream& cout, const Ucenik & obj);
- };
- ostream& operator<<(ostream& cout, const Ucenik & obj) {
- cout << "UCENIK: " << obj._imePrezime << endl;
- cout << "Godiste: " << obj._godiste << endl;
- cout << "Podjeduje opremu: " <<boolalpha<< obj._posjedujeOpremu << endl;
- cout << "Iznajmljena oprema: " << endl;
- for (int i = 0; i < obj._iznajmljenaOprema->size(); i++)
- {
- cout << "\t" << (*obj._iznajmljenaOprema)[i].getNaziv() << " Proizvodjac: " << (*obj._iznajmljenaOprema)[i].getProizvodjac() << endl;
- }
- cout << "\n";
- return cout;
- }
- enum TipTreninga { Pocetnicki, Rekreativni, Profesionalni };
- string stringTipTreninga[]= { "Pocetnicki", "Rekreativni", "Profesionalni" };
- class SkiTrener
- {
- string _imePrezime;
- bool _certificiran;
- char _spol;
- TipTreninga _tipTreninga;
- public:
- //Osnovne funkcije za rad sa klasom
- SkiTrener(string imePrezime = "------", char spol = '/', TipTreninga tip = (TipTreninga)0, bool certifikat = false) {
- _imePrezime = imePrezime;
- _spol = spol;
- _certificiran = certifikat;
- _tipTreninga = tip;
- }
- SkiTrener(const SkiTrener & obj) {
- _imePrezime = obj._imePrezime;
- _spol = obj._spol;
- _certificiran = obj._certificiran;
- _tipTreninga = obj._tipTreninga;
- }
- ~ SkiTrener(){}
- SkiTrener& operator=(const SkiTrener & obj) {
- if (this == &obj) return *this;
- this->~SkiTrener();
- _imePrezime = obj._imePrezime;
- _spol = obj._spol;
- _certificiran = obj._certificiran;
- _tipTreninga = obj._tipTreninga;
- }
- string getImePrezime() const { return _imePrezime; }
- bool Certifikat() const { return _certificiran; }
- char getSpol() const { return _spol; }
- TipTreninga getTipTreninga() const { return _tipTreninga; }
- bool operator==(const SkiTrener & obj) {
- if (_imePrezime == obj._imePrezime && _certificiran == obj._certificiran && _spol == obj._spol && _tipTreninga == obj._tipTreninga)
- return true;
- return false;
- }
- bool operator<(const SkiTrener & obj) {
- if (stringTipTreninga[_tipTreninga] < stringTipTreninga[obj._tipTreninga])
- return true;
- return false;
- }
- friend ostream & operator<<(ostream & cout, const SkiTrener & obj);
- };
- ostream & operator<<(ostream & cout, const SkiTrener & obj) {
- cout << "SKI TRENER: " << obj.getImePrezime() << endl;
- cout << "Certificiran: " << boolalpha << obj.Certifikat() << endl;
- cout << "Tip treninga: " << stringTipTreninga[obj.getTipTreninga()] << endl;
- cout << "\n";
- return cout;
- }
- class Trening
- {
- string* _datum;
- SkiTrener* _trener;
- vector<Ucenik*> _ucenici;
- int _brojCasova;
- public:
- //Konstruktor i destruktor
- Trening(string datum = "------", SkiTrener & trener = SkiTrener(), int brojCasova = 0) {
- _datum = new string(datum);
- _trener = new SkiTrener(trener);
- _brojCasova = brojCasova;
- }
- Trening(const Trening & obj) {
- _datum = new string(*obj._datum);
- _trener = new SkiTrener(*obj._trener);
- _brojCasova = obj._brojCasova;
- for (int i = 0; i < obj._ucenici.size(); i++)
- {
- _ucenici.push_back(new Ucenik(*obj._ucenici[i]));
- }
- }
- ~Trening() {
- delete _datum; _datum = nullptr;
- delete _trener; _trener = nullptr;
- for (int i = 0; i < _ucenici.size(); i++)
- {
- delete _ucenici[i]; _ucenici[i] = nullptr;
- }
- _ucenici.clear();
- }
- Trening & operator=(const Trening & obj) {
- if (this == &obj) return *this;
- this->~Trening();
- _datum = new string(*obj._datum);
- _trener = new SkiTrener(*obj._trener);
- _brojCasova = obj._brojCasova;
- for (int i = 0; i < obj._ucenici.size(); i++)
- {
- _ucenici.push_back(new Ucenik(*obj._ucenici[i]));
- }
- }
- //Operator += za dodavanje ucenika na trening.
- Trening & operator+=(Ucenik & ucenik) {
- vector<Ucenik*>::iterator it = _ucenici.begin();
- for (it; it != _ucenici.end(); it++)
- {
- if (**it == ucenik)
- throw exception("Ucenik vec dodan na trening!");
- }
- _ucenici.push_back(new Ucenik(ucenik));
- sort(_ucenici.begin(), _ucenici.end());
- }
- bool operator==(const Trening & obj) {
- if (*_datum == *obj._datum)
- return true;
- return false;
- }
- bool operator<(const Trening & obj) {
- if (_brojCasova < obj._brojCasova)
- return true;
- return false;
- }
- int getBrojCasova() const { return _brojCasova; }
- string * getDatum() const { return _datum; }
- SkiTrener * getTrener() const { return _trener; }
- vector<Ucenik*> & getUcenici() { return _ucenici; }
- TipTreninga getTipTreninga() { return _trener->getTipTreninga(); }
- //Operator za ispis.
- friend ostream& operator<<(ostream & cout, const Trening & obj);
- };
- ostream& operator<<(ostream & cout, const Trening & obj) {
- cout << "TRENING -----" << endl;
- cout << "Datum odrzavanja: " << *obj._datum << endl;
- cout << "Trener: " << obj._trener->getImePrezime() << " - " <<stringTipTreninga[obj._trener->getTipTreninga()] << endl;
- cout << "Ucenici: " << endl;
- for (int i = 0; i < obj._ucenici.size(); i++)
- {
- cout <<"\t"<< obj._ucenici[i]->getImePrezime() << " " << obj._ucenici[i]->getGodiste() << endl;
- }
- cout << "\n";
- return cout;
- }
- class SkiKurs {
- string _periodOdrzavanja;
- vector<SkiTrener> _treneri;
- vector<Ucenik> _polaznici;
- vector<Trening> _treninzi;
- public:
- //Konstruktor
- SkiKurs(string datum = "------"){_periodOdrzavanja = datum; }
- //Funkciju za dodavanje trenera (bez dupliranja elemenata).
- void DodajTrenera(SkiTrener & trener) {
- vector<SkiTrener>::iterator it = _treneri.begin();
- for (it; it != _treneri.end(); it++)
- {
- if (*it == trener)
- throw exception("Trener vec dodan na SkiKurs!");
- }
- _treneri.push_back(trener);
- }
- //Funkciju za dodavanje polaznika (bez dupliranja elemenata).
- void DodajPolaznika(Ucenik & ucenik) {
- vector<Ucenik>::iterator it = _polaznici.begin();
- for (it; it != _polaznici.end(); it++)
- {
- if (*it == ucenik)
- throw exception("Ucenik vec dodan na SkiKurs!");
- }
- _polaznici.push_back(ucenik);
- }
- //Funkciju za dodavanje odrzanih treninga.
- void DodajTrening(Trening & trening) {
- vector<Trening>::iterator it = _treninzi.begin();
- for (it; it != _treninzi.end(); it++)
- {
- if (*it == trening)
- throw exception("Trening vec dodan");
- }
- _treninzi.push_back(trening);
- }
- //Funkciju za dodavanje uplate uceniku za odredjeni trening (dakle, funkcija prima 3 parametra: uplata, ucenik, trening).
- //Prvenstveno je potrebno provjeriti da li je ucenik uopste evidentiran na datom treningu.
- //Cijena jednog casa zavisi od tipa treninga na kojem je ucenik bio:
- //Pocetnicki - 10KM
- //Rekreativni - 15KM
- //Profesionalni - 20KM
- //Uplata treba da bude tacnog iznosa proracunatog na osnovu prethodne kategorizacije i broja casova odrzanog treninga.
- //U svim slucajevima kada je neko od ogranicenja naruseno, baciti izuzetak.
- void DodajUplatu(Ucenik & ucenik, Trening & trening, Uplata & uplata, string svrha) {
- for (int i = 0; i < _treninzi.size(); i++)
- {
- for (int j = 0; j < _treninzi[i].getUcenici().size(); j++)
- {
- if (*_treninzi[i].getUcenici()[j] == ucenik) {
- if (svrha == "oprema") {
- int size = _treninzi[i].getUcenici()[j]->getIznajmljenaOprema()->size();
- bool uplaceno = false;
- for (int k = 0; k < size; k++)
- {
- Oprema * oprema = &(*_treninzi[i].getUcenici()[j]->getIznajmljenaOprema())[k];
- if (oprema->getCijena() >= uplata.getIznos()) {
- _treninzi[i].getUcenici()[j]->DodajUplatu(uplata, svrha);
- uplaceno = true;
- return;
- }
- }
- if (!uplaceno) {
- throw exception("Niste uplatili!");
- return;
- }
- }
- else
- {
- if (trening.getTipTreninga() == Pocetnicki) {
- if (uplata.getIznos() == trening.getBrojCasova() * 10) {
- _treninzi[i].getUcenici()[j]->DodajUplatu(uplata, svrha);
- return;
- }
- else {
- throw exception("Niste uplatili dovoljno novca!");
- }
- }
- else if(trening.getTipTreninga()==Rekreativni)
- {
- if (uplata.getIznos() == trening.getBrojCasova() * 15) {
- _treninzi[i].getUcenici()[j]->DodajUplatu(uplata, svrha);
- return;
- }
- else {
- throw exception("Niste uplatili dovoljno novca!");
- }
- }
- else
- {
- if (uplata.getIznos() == trening.getBrojCasova() * 20) {
- _treninzi[i].getUcenici()[j]->DodajUplatu(uplata, svrha);
- return;
- }
- else {
- throw exception("Niste uplatili dovoljno novca!");
- }
- }
- }
- }
- throw exception("Nepoznat ucenik koji je zaprimljen kao parametar!");
- }
- }
- }
- //Funkciju koja pronalazi ski trenera sa najvecim brojem odrzanih casova i ispisuje njegov ostvareni profit.
- SkiTrener & TrenerSaNajvecimBrojemCasova() {
- struct Trener
- {
- string imePrezime;
- int brojCasova;
- };
- int size = _treneri.size();
- Trener * niz = new Trener[size];
- for (int i = 0; i < size; i++)
- {
- niz[i].imePrezime = _treneri[i].getImePrezime();
- niz[i].brojCasova = 0;
- }
- for (int i = 0; i < _treninzi.size(); i++)
- {
- for (int j = 0; j < size; j++)
- {
- if (_treninzi[i].getTrener()->getImePrezime() == niz[j].imePrezime)
- niz[j].brojCasova += _treninzi[i].getBrojCasova();
- }
- }
- int maxCasova = niz[0].brojCasova;
- int index = 0;
- for (int i = 0; i < size; i++)
- {
- if (niz[i].brojCasova > maxCasova) {
- maxCasova = niz[i].brojCasova;
- index = i;
- }
- }
- for (int i = 0; i < _treninzi.size(); i++)
- {
- if (_treninzi[i].getTrener()->getImePrezime() == niz[index].imePrezime) {
- cout << "Ukupno casova: " << maxCasova << endl;
- cout << "Ukupna zarada: ";
- if (_treninzi[i].getTipTreninga() == Pocetnicki)
- cout << _treninzi[i].getBrojCasova() * 10 << " KM." << endl;
- else if (_treninzi[i].getTipTreninga() == Rekreativni)
- cout << _treninzi[i].getBrojCasova() * 15 << " KM." << endl;
- else
- cout << _treninzi[i].getBrojCasova() * 20 << " KM." << endl;
- return *_treninzi[i].getTrener();
- }
- }
- }
- //Funkciju koja pronalazi ucenika od kojeg je ostvarena najveca zarada, ukljucujuci uplate za iznajmljenu opremu.
- //Funkciju koja sortira podatke o kompletnom kursu. Podaci trebaju biti sortirani na sljedeci nacin:
- //- treneri prema kategoriji
- //- treninzi prema broju ucenika koji su prisustvovali
- //- polaznici prema godistu.
- //Ovu funkciju je potrebno pozvati kreiranjem posebnog thread-a.
- void SortirajPodatke() {
- sort(_treneri.begin(), _treneri.end());
- sort(_treninzi.begin(), _treninzi.end());
- sort(_polaznici.begin(), _polaznici.end());
- }
- //Funkciju koja vrsi ispis svih podataka po kategorijama i sortirano u skladu sa zahtijevima
- friend ostream& operator<<(ostream & cout, const SkiKurs & obj);
- };
- ostream& operator<<(ostream & cout, const SkiKurs & obj) {
- cout << "\t:::::S K I K U R S:::::" << endl;
- cout << "\t\tDatum: " << obj._periodOdrzavanja << endl;
- cout << "\TRENERI" << endl;
- for (int i = 0; i < obj._treneri.size(); i++)
- {
- cout << "\t" << obj._treneri[i].getImePrezime() << " " <<stringTipTreninga[obj._treneri[i].getTipTreninga()] << endl;
- }
- cout << "\POLAZNICI" << endl;
- for (int i = 0; i < obj._polaznici.size(); i++)
- {
- cout << "\t" << obj._polaznici[i].getImePrezime() << " " <<obj._polaznici[i].getGodiste()<< endl;
- }
- cout << "\TRENINZI" << endl;
- for (int i = 0; i < obj._treninzi.size(); i++)
- {
- cout << "\t" << *obj._treninzi[i].getDatum() <<" Trener: "<< obj._treninzi[i].getTrener()->getImePrezime() <<" Broj ucenika: "<<obj._treninzi[i].getBrojCasova()<< endl;
- }
- cout << "\n";
- return cout;
- }
- int main() {
- #pragma region Oprema
- Oprema pancerice("Pancerice", "Nordica", 120, 6);
- Oprema muska_jakna("Muska skijaska jakna", "Colmar", 230, 6);
- Oprema zenska_jakna("Zenska skijaska jakna", "Colmar", 230, 7);
- Oprema torba("Torba za pancerice", "Tecno", 15, 10);
- Oprema naocale("Skijaske naocale", "McKinley", 25, 15);
- Oprema kaciga("Kaciga za skijanje", "Rsssignol", 45, 4);
- #pragma endregion
- #pragma region SkiTreneri
- SkiTrener mirnes("Mirnes Cerimovic", 'M', Pocetnicki, true);
- SkiTrener adnan("Adnan Pasic", 'M', Rekreativni, true);
- SkiTrener eldin("Eldin Husic", 'M', Profesionalni, true);
- #pragma endregion
- #pragma region Ucenici
- Ucenik nisvet("Nisvet Mujkic", 1996);
- nisvet += pancerice;
- nisvet += kaciga;
- Ucenik eman("Eman Basic", 1997);
- eman += naocale;
- Ucenik mirza("Mirza Muratovic", 1995);
- mirza += muska_jakna;
- Ucenik faruk("Faruk Mujkic", 1994);
- faruk += kaciga;
- Ucenik adem("Adem Mujkic", 2000);
- adem += torba;
- Ucenik ishak("Ishak Ishakovic", 1993);
- ishak += pancerice;
- #pragma endregion
- #pragma region Treninzi
- Trening trening_1("13.01.2017", mirnes, 3);
- trening_1 += nisvet;
- trening_1 += eman;
- Trening trening_2("15.01.2017", mirnes, 5);
- trening_2 += faruk;
- trening_2 += adem;
- trening_2 += nisvet;
- trening_2 += mirza;
- trening_2 += ishak;
- Trening trening_3("17.01.2017", adnan, 9);
- trening_3 += mirza;
- trening_3 += nisvet;
- trening_3 += eman;
- trening_3 += adem;
- Uplata oprema_nm("09.01.2017", 120); // mora platiti 120 KM jer je to cijena pancerica, sve ispod baca izuzetak
- Uplata uplata_1("10.01.2017", 30);
- Uplata uplata_2("11.01.2017", 50);
- Uplata uplata_3("12.01.2017", 135);
- Uplata oprema_NM("17.01.2017", 45);
- #pragma endregion
- SkiKurs SnowAdventure("01.01.2017 - 31.01.2017");
- #pragma region Add_PolaznikaTreningaUplataTrenera
- SnowAdventure.DodajPolaznika(nisvet);
- SnowAdventure.DodajPolaznika(adem);
- SnowAdventure.DodajPolaznika(faruk);
- SnowAdventure.DodajPolaznika(mirza);
- SnowAdventure.DodajPolaznika(eman);
- SnowAdventure.DodajPolaznika(ishak);
- SnowAdventure.DodajTrening(trening_1);
- SnowAdventure.DodajTrening(trening_2);
- SnowAdventure.DodajTrening(trening_3);
- /*In next step when i remove try catch run time error appear.*/
- try
- {
- SnowAdventure.DodajUplatu(nisvet, trening_1, uplata_1, "trening");
- SnowAdventure.DodajUplatu(nisvet, trening_2, uplata_2, "trening");
- SnowAdventure.DodajUplatu(nisvet, trening_3, uplata_3, "trening");
- SnowAdventure.DodajUplatu(nisvet, trening_1, oprema_nm, "oprema");
- SnowAdventure.DodajUplatu(nisvet, trening_3, oprema_NM, "oprema");
- }
- catch (const std::exception& obj)
- {
- obj.what();
- }
- SnowAdventure.DodajTrenera(mirnes);
- SnowAdventure.DodajTrenera(adnan);
- SnowAdventure.DodajTrenera(eldin);
- SnowAdventure.SortirajPodatke();
- cout << SnowAdventure << endl;
- #pragma endregion
- //
- // thread thread_1(&SkiKurs::SortirajPodatke, SnowAdventure);
- // SnowAdventure.SortirajPodatke();
- // thread_1.join();
- //
- // SnowAdventure.IspisPodatakaPoKategorijama();
- //
- // cout << "\t:::Ucenik koji je uplatio najvise novca:::\n";
- // Ucenik ucenik = SnowAdventure.UcenikKojiJeDaoNajviseNovca();
- //
- // cout << ucenik << crt;
- cout << "\t:::Trener koji je odrzao najvise casova i pri tom najvise zaradio:::\n";
- SkiTrener trener = SnowAdventure.TrenerSaNajvecimBrojemCasova();
- cout << trener << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement