Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<exception>
- using namespace std;
- class Izuzetak :public exception {
- string _datum;
- int _linija;
- public:
- Izuzetak(string datum, int linija, char* poruka): exception(poruka)
- {
- this->_datum=datum;
- this->_linija=linija;
- }
- friend ostream &operator<<(ostream &c, Izuzetak &obj)
- {
- cout<<obj.what();
- }
- };
- template<class T1, class T2, int max>
- class Kolekcija {
- T1 * _elementi1[max];
- T2 * _elementi2[max];
- int * _trenutno;
- public:
- Kolekcija()
- {
- this->_trenutno=new int(0);
- }
- ~Kolekcija()
- {
- for(int i=0;i<*this->_trenutno;i++)
- {
- delete this->_elementi1[i];
- delete this->_elementi2[i];
- }
- delete this->_trenutno;
- }
- Kolekcija(const Kolekcija<T1,T2,max> &obj)
- {
- _trenutno=new int (*obj._trenutno);
- for(int i=0;i<*obj._trenutno;i++)
- {
- this->_elementi1[i]=new T1(*obj._elementi1[i]);
- this->_elementi2[i]=new T2(*obj._elementi2[i]);
- }
- }
- int GetMax(){return max;}
- T1 GetElement1(int i){return *this->_elementi1[i];}
- T2 GetElement2(int i){return *this->_elementi2[i];}
- int GetTrenutno(){return *this->_trenutno;}
- Kolekcija &operator=(Kolekcija<T1,T2,max> &obj)
- {
- if(this==&obj)
- return *this;
- for(int i=0;i<*_trenutno;i++)
- {
- delete this->_elementi1[i];
- delete this->_elementi2[i];
- }
- delete this->_trenutno;
- _trenutno=new int(*obj._trenutno);
- for(int i=0;i<*obj._trenutno;i++)
- {
- this->_elementi1[i]=new T1(*obj._elementi1[i]);
- this->_elementi2[i]=new T2(*obj._elementi2[i]);
- }
- return *this;
- }
- bool AddElement(T1 e1, T2 e2)
- {
- if(*this->_trenutno==max)
- return false;
- for(int i=0;i<*this->_trenutno;i++)
- {
- if(*this->_elementi1[i]==e1 && *this->_elementi2[i]==e2)
- return false;
- }
- this->_elementi1[*_trenutno]=new T1(e1);
- this->_elementi2[*_trenutno]=new T2(e2);
- (*_trenutno)++;
- return true;
- }
- friend ostream &operator<< <>(ostream &c,Kolekcija<T1,T2,max> &obj)
- {
- cout<<"Trenutno ima : "<<*obj._trenutno<<endl;
- for(int i=0;i<*obj._trenutno;i++)
- {
- cout<<"E1 :"<<*obj._elementi1[i]<<" E2:"<<*obj._elementi2[i]<<endl;
- }
- return c;
- }
- };
- class Datum
- {
- int *_dan, *_mjesec, *_godina;
- public:
- Datum(int dan = 1, int mjesec = 1, int godina = 2000)
- {
- _dan = new int(dan);
- _mjesec = new int(mjesec);
- _godina = new int(godina);
- }
- ~Datum()
- {
- delete _dan; _dan = nullptr;
- delete _mjesec; _mjesec = nullptr;
- delete _godina; _godina = nullptr;
- }
- Datum(const Datum &obj)
- {
- this->_dan=new int(*obj._dan);
- this->_mjesec=new int(*obj._mjesec);
- this->_godina=new int(*obj._godina);
- }
- Datum &operator= (const Datum &obj)
- {
- delete this->_dan,this->_mjesec,this->_godina;
- this->_dan=new int(*obj._dan);
- this->_mjesec=new int(*obj._mjesec);
- this->_godina=new int(*obj._godina);
- return *this;
- }
- friend ostream& operator<< (ostream &COUT, Datum &obj)
- {
- COUT << *obj._dan << " " << *obj._mjesec << " " << *obj._godina;
- return COUT;
- }
- bool operator==(Datum &obj)
- {
- if(*this->_dan!=*obj._dan || *this->_mjesec!=*obj._mjesec || *this->_godina!=*obj._godina )
- return false;
- else
- return true;
- }
- };
- enum ListaKurseva { HtmlCSSJavaScript, SoftwareEngeneeringFundamentals, MasteringSQL, WindowsSecurity };
- class Kurs {
- ListaKurseva _kurs;
- Datum * _pocetak;
- Datum * _kraj;
- char * _imePredavaca;
- public:
- Kurs(int k,char *ime,Datum date1,Datum date2)
- {
- this->_kurs=ListaKurseva(k);
- _pocetak=new Datum(date1);
- _kraj=new Datum(date2);
- _imePredavaca=new char[strlen(ime)+1];
- strcpy_s (_imePredavaca,strlen(ime)+1,ime);
- }
- ~Kurs()
- {
- delete _kraj,_pocetak;
- delete []_imePredavaca;
- _imePredavaca =nullptr;
- }
- Kurs (const Kurs &obj)
- {
- _pocetak=new Datum(*obj._pocetak);
- _kraj=new Datum(*obj._kraj);
- this->_kurs=obj._kurs;
- _imePredavaca=new char[strlen(obj._imePredavaca)+1];
- strcpy_s(_imePredavaca, strlen(obj._imePredavaca)+1,obj._imePredavaca);
- }
- Kurs &operator=(const Kurs &obj)
- {
- delete _kraj,_pocetak;
- delete []_imePredavaca;
- _imePredavaca =nullptr;
- _pocetak=new Datum(*obj._pocetak);
- _kraj=new Datum(*obj._kraj);
- this->_kurs=obj._kurs;
- _imePredavaca=new char[strlen(obj._imePredavaca)+1];
- strcpy_s(_imePredavaca, strlen(obj._imePredavaca)+1,obj._imePredavaca);
- return *this;
- }
- friend ostream &operator<<(ostream &c,Kurs &obj)
- {
- cout<<"Ime predavaca :"<<obj._imePredavaca<<endl;
- cout<<"Početak datuma : "<<*obj._pocetak<<" i kraj datuma : "<<*obj._kraj<<endl;
- cout<<"KURS : "<<obj._kurs<<endl;
- return c;
- }
- bool operator ==(Kurs &obj)
- {
- if((strcmp(this->_imePredavaca,obj._imePredavaca)==0) || *_kraj==*_kraj || *_pocetak==*obj._pocetak || _kurs==obj._kurs)
- return true;
- else
- return false;
- }
- };
- class Polaznik {
- static int ID;
- const int _polaznikID; //svakom novom studentu automatski dodijeliti novi ID (autoincrement)
- char * _imePrezime;
- vector<Kurs> _pohadjaniKursevi;
- public:
- Polaznik(char * imePrezime) :_polaznikID(ID++) {
- int size = strlen(imePrezime) + 1;
- _imePrezime = new char[size];
- strcpy_s(_imePrezime, size, imePrezime);
- }
- ~Polaznik() { delete[] _imePrezime; }
- };
- //
- //class SkillsCentar {
- //string _nazivCentra;
- //vector<Kurs> _kursevi;//kursevi koje nudi odredjeni centar
- //Kolekcija<Kurs *, Polaznik*, 150> _aplikanti;
- //public:
- //SkillsCentar(string naziv) { _nazivCentra = naziv; }
- //SkillsCentar(const SkillsCentar & obj) :_kursevi(obj._kursevi), _aplikanti(obj._aplikanti) {
- //_nazivCentra = obj._nazivCentra;
- //}
- //};
- char *crt = "\n---------------------------------------\n";
- void main()
- {
- /****************************************************************************
- 1. SVE KLASE TREBAJU POSJEDOVATI ADEKVATAN DESTRUKTOR
- 2. NAMJERNO IZOSTAVLJANJE KOMPLETNIH I/ILI POJEDINIH DIJELOVA DESTRUKTORA KOJI UZROKUJU RUNTIME ERROR CE BITI OZNACENO KAO "RE"
- 3. SPASAVAJTE PROJEKAT KAKO BI SE SPRIJECILO GUBLJENJE URADJENOG ZADATKA
- 4. PROGRAMSKI CODE SE TAKODJER NALAZI U FAJLU CODE_.TXT
- 5. NAZIVI FUNKCIJA MORAJU BITI IDENTIČNI ONIMA KOJI SU KORIŠTENI U TESTNOM CODE-U.OSTALE, POMOĆNE FUNKCIJE MOŽETE IMENOVATI PO ŽELJI.
- 6. IZUZETAK BACITE KAD GOD JE TO POTREBNO.
- ****************************************************************************/
- /*#pragma region TestiranjeDatuma
- Datum danas(26, 11, 2015);
- Datum sutra(danas);
- Datum prekosutra;
- prekosutra = danas;
- cout << danas << endl << sutra << endl << prekosutra << crt;
- #pragma endregion*/
- /*#pragma region TestiranjeKolekcije
- Kolekcija<int, int, 10> kolekcija1;
- for (int i = 0; i < kolekcija1.GetMax(); i++)
- kolekcija1.AddElement(i, i + 2);
- cout << kolekcija1.GetElement1(0) << " " << kolekcija1.GetElement2(0) << endl;
- cout << kolekcija1 << endl;
- Kolekcija<int, int, 10> kolekcija2;
- kolekcija2 = kolekcija1;
- cout << kolekcija2 << crt;
- if (kolekcija1.GetTrenutno() == kolekcija2.GetTrenutno())
- cout << "ISTI BROJ ELEMENATA" << endl;
- Kolekcija<int, int, 10> kolekcija3(kolekcija2);
- cout << kolekcija3 << crt;
- #pragma endregion*/
- //
- //#pragma region TestiranjeKursa
- //Kurs sef(SoftwareEngeneeringFundamentals, "Jasmin Azemovic", Datum(28, 1, 2016), Datum(15, 2, 2016));
- //cout << sef << endl;
- //Kurs msql(MasteringSQL, "Adel Handzic", Datum(28, 2, 2016), Datum(15, 3, 2016));
- //sef = msql;
- //cout<<msql << endl;
- //
- //if (sef == msql)//kursevi su isti ako posjeduju identicne vrijednosti svih atributa
- //cout << "ISTI SU KURSEVI" << endl;
- //cout<<crt;
- //Kurs msql2(msql);
- //cout << msql2 << endl;
- ////#pragma endregion
- //#pragma region TestiranjePolaznika
- //Polaznik denis("Denis Music");
- //Polaznik denis2("Denis2 Music2");
- //try{
- //if (denis.AddKurs(sef)) //<<<< NAKON DODAVANJA SVAKOG NOVOG KURSA IZVRSITI NJIHOVO SORTIRANJE - NACIN SORTIRANJA PO VASEM IZBORU
- //cout << "Polazniku " << denis << " uspjesno dodat kurs " << sef << endl;
- //if (denis.AddKurs(msql))
- //cout << "Polazniku " << denis << " uspjesno dodat kurs " << msql << endl;
- //if (denis.AddKurs(msql))//<<<< NIJE DOZVOLJENO DODATI IDENTICNE KURSEVE, PRILIKOM PROVJERE KORISTITI ITERATOR
- //cout << "Polazniku " << denis << " uspjesno dodat kurs " << msql << endl;
- //if (denis.RemoveKurs(msql))
- //cout << "Polazniku " << denis << " uspjesno uklonjen kurs " << msql << endl;
- //if (denis.RemoveKurs(sef))
- //cout << "Polazniku " << denis << " uspjesno uklonjen kurs " << sef << endl;
- //
- //cout << denis2 << endl;//<<<<<KORISTITI OSTREAM_ITERATOR
- //denis2 = denis;
- //if(denis==denis2)//polaznici su isti ako imaju isto ime i ako su pohadjali iste kurseve
- //cout << "ISTI SU" << endl;
- //}
- //catch (Izuzetak & err) {
- //cout << err << endl;
- //}
- //#pragma endregion
- //
- //#pragma region TestiranjeCentra
- //try{
- //SkillsCentar mostar("Skills Center Mostar");
- //if(mostar.ProvjeriKoliziju(sef))//<<<JEDAN KURS NE SMIJE POCETI DOK DRUGI TRAJE TJ. VRIJEME ODRZAVANJA KURSA SE NE SMIJE POKLAPATI
- //mostar.AddKurs(sef);
- //if (mostar.ProvjeriKoliziju(msql))
- //mostar.AddKurs(msql);
- //if (mostar.ProvjeriKoliziju(msql2))
- //mostar.AddKurs(msql2);//<<<< ONEMOGUCITI DODAVANJE IDENTICNIH KURSEVA
- //
- //mostar.AddAplikaciju(sef, denis);//<<< ONEMOGUCITI APLICIRANJE ZA KURSEVE KOJI NISU REGISTROVANI U CENTRU
- //mostar.AddAplikaciju(msql, denis);
- //mostar.AddAplikaciju(msql, denis);//<<< ONEMOGUCITI APLICIRANJE ZA ISTI KURS
- //
- //mostar.DodajUspjesnoOkoncanKurs(1, sef);//BROJ 1 OZNACAVA id STUDENTA. FUNKCIJA JE ZADUZENA DA STUDENTU DODA KURS KOJI JE POSLAT KAO PARAMETAR. PREDUSLOV ZA DODAVANJE JE DA JE STUDENT PRETHODNO APLICIRAO ZA TAJ KURS
- //vector<Polaznik> listaPolaznika = mostar.GetPolazniciByPredavac("Jasmin Azemovic");//VRACA INFORMACIJE O POLAZNICIMA KOJI SU KOD ODREDJENOG PREDAVACA USPJESNO OKONCALI KURS
- //
- //if (mostar.RemoveKurs(sef))//ONEMOGUCITI UKLANJANJE KURSA KOJI SU VEC PRIJAVILI NEKI OD POLAZNIKA
- //cout << "Kurs " << sef << " uspjesno uklonjen iz cetra " << mostar << endl;
- //
- //SkillsCentar sarajevo = mostar;
- //cout << sarajevo << endl;
- //}
- //catch (Izuzetak & err) {
- //cout << err << endl;
- //}
- #pragma endregion
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement