Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.01 KB | None | 0 0
  1. #include<iostream>
  2. #include<exception>
  3. using namespace std;
  4. class Izuzetak :public exception {
  5. string _datum;
  6. int _linija;
  7. public:
  8. Izuzetak(string datum, int linija, char* poruka): exception(poruka)
  9. {
  10. this->_datum=datum;
  11. this->_linija=linija;
  12.  
  13. }
  14. friend ostream &operator<<(ostream &c, Izuzetak &obj)
  15. {
  16. cout<<obj.what();
  17.  
  18. }
  19. };
  20. template<class T1, class T2, int max>
  21. class Kolekcija {
  22. T1 * _elementi1[max];
  23. T2 * _elementi2[max];
  24. int * _trenutno;
  25. public:
  26. Kolekcija()
  27. {
  28. this->_trenutno=new int(0);
  29. }
  30. ~Kolekcija()
  31. {
  32.  
  33. for(int i=0;i<*this->_trenutno;i++)
  34. {
  35. delete this->_elementi1[i];
  36. delete this->_elementi2[i];
  37. }
  38. delete this->_trenutno;
  39. }
  40. Kolekcija(const Kolekcija<T1,T2,max> &obj)
  41. {
  42.  
  43. _trenutno=new int (*obj._trenutno);
  44. for(int i=0;i<*obj._trenutno;i++)
  45. {
  46. this->_elementi1[i]=new T1(*obj._elementi1[i]);
  47. this->_elementi2[i]=new T2(*obj._elementi2[i]);
  48.  
  49. }
  50. }
  51.  
  52. int GetMax(){return max;}
  53. T1 GetElement1(int i){return *this->_elementi1[i];}
  54. T2 GetElement2(int i){return *this->_elementi2[i];}
  55. int GetTrenutno(){return *this->_trenutno;}
  56.  
  57. Kolekcija &operator=(Kolekcija<T1,T2,max> &obj)
  58. {
  59. if(this==&obj)
  60. return *this;
  61. for(int i=0;i<*_trenutno;i++)
  62. {
  63. delete this->_elementi1[i];
  64. delete this->_elementi2[i];
  65. }
  66. delete this->_trenutno;
  67.  
  68. _trenutno=new int(*obj._trenutno);
  69. for(int i=0;i<*obj._trenutno;i++)
  70. {
  71. this->_elementi1[i]=new T1(*obj._elementi1[i]);
  72. this->_elementi2[i]=new T2(*obj._elementi2[i]);
  73.  
  74. }
  75. return *this;
  76. }
  77. bool AddElement(T1 e1, T2 e2)
  78. {
  79. if(*this->_trenutno==max)
  80. return false;
  81.  
  82. for(int i=0;i<*this->_trenutno;i++)
  83. {
  84. if(*this->_elementi1[i]==e1 && *this->_elementi2[i]==e2)
  85. return false;
  86. }
  87.  
  88. this->_elementi1[*_trenutno]=new T1(e1);
  89. this->_elementi2[*_trenutno]=new T2(e2);
  90.  
  91. (*_trenutno)++;
  92. return true;
  93. }
  94.  
  95. friend ostream &operator<< <>(ostream &c,Kolekcija<T1,T2,max> &obj)
  96. {
  97. cout<<"Trenutno ima : "<<*obj._trenutno<<endl;
  98. for(int i=0;i<*obj._trenutno;i++)
  99. {
  100. cout<<"E1 :"<<*obj._elementi1[i]<<" E2:"<<*obj._elementi2[i]<<endl;
  101. }
  102. return c;
  103.  
  104. }
  105. };
  106.  
  107. class Datum
  108. {
  109. int *_dan, *_mjesec, *_godina;
  110. public:
  111. Datum(int dan = 1, int mjesec = 1, int godina = 2000)
  112. {
  113. _dan = new int(dan);
  114. _mjesec = new int(mjesec);
  115. _godina = new int(godina);
  116. }
  117. ~Datum()
  118. {
  119. delete _dan; _dan = nullptr;
  120. delete _mjesec; _mjesec = nullptr;
  121. delete _godina; _godina = nullptr;
  122. }
  123. Datum(const Datum &obj)
  124. {
  125. this->_dan=new int(*obj._dan);
  126. this->_mjesec=new int(*obj._mjesec);
  127. this->_godina=new int(*obj._godina);
  128. }
  129. Datum &operator= (const Datum &obj)
  130. {
  131. delete this->_dan,this->_mjesec,this->_godina;
  132. this->_dan=new int(*obj._dan);
  133. this->_mjesec=new int(*obj._mjesec);
  134. this->_godina=new int(*obj._godina);
  135. return *this;
  136. }
  137. friend ostream& operator<< (ostream &COUT, Datum &obj)
  138. {
  139. COUT << *obj._dan << " " << *obj._mjesec << " " << *obj._godina;
  140. return COUT;
  141. }
  142. bool operator==(Datum &obj)
  143. {
  144. if(*this->_dan!=*obj._dan || *this->_mjesec!=*obj._mjesec || *this->_godina!=*obj._godina )
  145. return false;
  146. else
  147. return true;
  148.  
  149. }
  150. };
  151. enum ListaKurseva { HtmlCSSJavaScript, SoftwareEngeneeringFundamentals, MasteringSQL, WindowsSecurity };
  152. class Kurs {
  153. ListaKurseva _kurs;
  154. Datum * _pocetak;
  155. Datum * _kraj;
  156. char * _imePredavaca;
  157. public:
  158. Kurs(int k,char *ime,Datum date1,Datum date2)
  159. {
  160. this->_kurs=ListaKurseva(k);
  161. _pocetak=new Datum(date1);
  162. _kraj=new Datum(date2);
  163. _imePredavaca=new char[strlen(ime)+1];
  164. strcpy_s (_imePredavaca,strlen(ime)+1,ime);
  165.  
  166.  
  167. }
  168. ~Kurs()
  169. {
  170. delete _kraj,_pocetak;
  171. delete []_imePredavaca;
  172. _imePredavaca =nullptr;
  173. }
  174. Kurs (const Kurs &obj)
  175. {
  176.  
  177.  
  178. _pocetak=new Datum(*obj._pocetak);
  179. _kraj=new Datum(*obj._kraj);
  180. this->_kurs=obj._kurs;
  181. _imePredavaca=new char[strlen(obj._imePredavaca)+1];
  182. strcpy_s(_imePredavaca, strlen(obj._imePredavaca)+1,obj._imePredavaca);
  183.  
  184. }
  185. Kurs &operator=(const Kurs &obj)
  186. {
  187. delete _kraj,_pocetak;
  188. delete []_imePredavaca;
  189. _imePredavaca =nullptr;
  190.  
  191. _pocetak=new Datum(*obj._pocetak);
  192. _kraj=new Datum(*obj._kraj);
  193. this->_kurs=obj._kurs;
  194. _imePredavaca=new char[strlen(obj._imePredavaca)+1];
  195. strcpy_s(_imePredavaca, strlen(obj._imePredavaca)+1,obj._imePredavaca);
  196. return *this;
  197. }
  198. friend ostream &operator<<(ostream &c,Kurs &obj)
  199. {
  200. cout<<"Ime predavaca :"<<obj._imePredavaca<<endl;
  201. cout<<"Početak datuma : "<<*obj._pocetak<<" i kraj datuma : "<<*obj._kraj<<endl;
  202. cout<<"KURS : "<<obj._kurs<<endl;
  203. return c;
  204. }
  205. bool operator ==(Kurs &obj)
  206. {
  207.  
  208. if((strcmp(this->_imePredavaca,obj._imePredavaca)==0) || *_kraj==*_kraj || *_pocetak==*obj._pocetak || _kurs==obj._kurs)
  209. return true;
  210. else
  211. return false;
  212. }
  213. };
  214.  
  215. class Polaznik {
  216. static int ID;
  217. const int _polaznikID; //svakom novom studentu automatski dodijeliti novi ID (autoincrement)
  218. char * _imePrezime;
  219. vector<Kurs> _pohadjaniKursevi;
  220. public:
  221. Polaznik(char * imePrezime) :_polaznikID(ID++) {
  222. int size = strlen(imePrezime) + 1;
  223. _imePrezime = new char[size];
  224. strcpy_s(_imePrezime, size, imePrezime);
  225. }
  226. ~Polaznik() { delete[] _imePrezime; }
  227. };
  228. //
  229. //class SkillsCentar {
  230. //string _nazivCentra;
  231. //vector<Kurs> _kursevi;//kursevi koje nudi odredjeni centar
  232. //Kolekcija<Kurs *, Polaznik*, 150> _aplikanti;
  233. //public:
  234. //SkillsCentar(string naziv) { _nazivCentra = naziv; }
  235. //SkillsCentar(const SkillsCentar & obj) :_kursevi(obj._kursevi), _aplikanti(obj._aplikanti) {
  236. //_nazivCentra = obj._nazivCentra;
  237. //}
  238. //};
  239. char *crt = "\n---------------------------------------\n";
  240.  
  241. void main()
  242. {
  243. /****************************************************************************
  244. 1. SVE KLASE TREBAJU POSJEDOVATI ADEKVATAN DESTRUKTOR
  245. 2. NAMJERNO IZOSTAVLJANJE KOMPLETNIH I/ILI POJEDINIH DIJELOVA DESTRUKTORA KOJI UZROKUJU RUNTIME ERROR CE BITI OZNACENO KAO "RE"
  246. 3. SPASAVAJTE PROJEKAT KAKO BI SE SPRIJECILO GUBLJENJE URADJENOG ZADATKA
  247. 4. PROGRAMSKI CODE SE TAKODJER NALAZI U FAJLU CODE_.TXT
  248. 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.
  249. 6. IZUZETAK BACITE KAD GOD JE TO POTREBNO.
  250. ****************************************************************************/
  251.  
  252. /*#pragma region TestiranjeDatuma
  253. Datum danas(26, 11, 2015);
  254. Datum sutra(danas);
  255. Datum prekosutra;
  256. prekosutra = danas;
  257. cout << danas << endl << sutra << endl << prekosutra << crt;
  258. #pragma endregion*/
  259.  
  260. /*#pragma region TestiranjeKolekcije
  261. Kolekcija<int, int, 10> kolekcija1;
  262. for (int i = 0; i < kolekcija1.GetMax(); i++)
  263. kolekcija1.AddElement(i, i + 2);
  264. cout << kolekcija1.GetElement1(0) << " " << kolekcija1.GetElement2(0) << endl;
  265. cout << kolekcija1 << endl;
  266. Kolekcija<int, int, 10> kolekcija2;
  267. kolekcija2 = kolekcija1;
  268. cout << kolekcija2 << crt;
  269. if (kolekcija1.GetTrenutno() == kolekcija2.GetTrenutno())
  270. cout << "ISTI BROJ ELEMENATA" << endl;
  271. Kolekcija<int, int, 10> kolekcija3(kolekcija2);
  272. cout << kolekcija3 << crt;
  273. #pragma endregion*/
  274. //
  275. //#pragma region TestiranjeKursa
  276. //Kurs sef(SoftwareEngeneeringFundamentals, "Jasmin Azemovic", Datum(28, 1, 2016), Datum(15, 2, 2016));
  277. //cout << sef << endl;
  278. //Kurs msql(MasteringSQL, "Adel Handzic", Datum(28, 2, 2016), Datum(15, 3, 2016));
  279. //sef = msql;
  280. //cout<<msql << endl;
  281. //
  282. //if (sef == msql)//kursevi su isti ako posjeduju identicne vrijednosti svih atributa
  283. //cout << "ISTI SU KURSEVI" << endl;
  284. //cout<<crt;
  285. //Kurs msql2(msql);
  286. //cout << msql2 << endl;
  287. ////#pragma endregion
  288.  
  289.  
  290. //#pragma region TestiranjePolaznika
  291. //Polaznik denis("Denis Music");
  292. //Polaznik denis2("Denis2 Music2");
  293. //try{
  294. //if (denis.AddKurs(sef)) //<<<< NAKON DODAVANJA SVAKOG NOVOG KURSA IZVRSITI NJIHOVO SORTIRANJE - NACIN SORTIRANJA PO VASEM IZBORU
  295. //cout << "Polazniku " << denis << " uspjesno dodat kurs " << sef << endl;
  296. //if (denis.AddKurs(msql))
  297. //cout << "Polazniku " << denis << " uspjesno dodat kurs " << msql << endl;
  298. //if (denis.AddKurs(msql))//<<<< NIJE DOZVOLJENO DODATI IDENTICNE KURSEVE, PRILIKOM PROVJERE KORISTITI ITERATOR
  299. //cout << "Polazniku " << denis << " uspjesno dodat kurs " << msql << endl;
  300. //if (denis.RemoveKurs(msql))
  301. //cout << "Polazniku " << denis << " uspjesno uklonjen kurs " << msql << endl;
  302. //if (denis.RemoveKurs(sef))
  303. //cout << "Polazniku " << denis << " uspjesno uklonjen kurs " << sef << endl;
  304. //
  305. //cout << denis2 << endl;//<<<<<KORISTITI OSTREAM_ITERATOR
  306. //denis2 = denis;
  307. //if(denis==denis2)//polaznici su isti ako imaju isto ime i ako su pohadjali iste kurseve
  308. //cout << "ISTI SU" << endl;
  309. //}
  310. //catch (Izuzetak & err) {
  311. //cout << err << endl;
  312. //}
  313. //#pragma endregion
  314. //
  315. //#pragma region TestiranjeCentra
  316. //try{
  317. //SkillsCentar mostar("Skills Center Mostar");
  318. //if(mostar.ProvjeriKoliziju(sef))//<<<JEDAN KURS NE SMIJE POCETI DOK DRUGI TRAJE TJ. VRIJEME ODRZAVANJA KURSA SE NE SMIJE POKLAPATI
  319. //mostar.AddKurs(sef);
  320. //if (mostar.ProvjeriKoliziju(msql))
  321. //mostar.AddKurs(msql);
  322. //if (mostar.ProvjeriKoliziju(msql2))
  323. //mostar.AddKurs(msql2);//<<<< ONEMOGUCITI DODAVANJE IDENTICNIH KURSEVA
  324. //
  325. //mostar.AddAplikaciju(sef, denis);//<<< ONEMOGUCITI APLICIRANJE ZA KURSEVE KOJI NISU REGISTROVANI U CENTRU
  326. //mostar.AddAplikaciju(msql, denis);
  327. //mostar.AddAplikaciju(msql, denis);//<<< ONEMOGUCITI APLICIRANJE ZA ISTI KURS
  328. //
  329. //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
  330. //vector<Polaznik> listaPolaznika = mostar.GetPolazniciByPredavac("Jasmin Azemovic");//VRACA INFORMACIJE O POLAZNICIMA KOJI SU KOD ODREDJENOG PREDAVACA USPJESNO OKONCALI KURS
  331. //
  332. //if (mostar.RemoveKurs(sef))//ONEMOGUCITI UKLANJANJE KURSA KOJI SU VEC PRIJAVILI NEKI OD POLAZNIKA
  333. //cout << "Kurs " << sef << " uspjesno uklonjen iz cetra " << mostar << endl;
  334. //
  335. //SkillsCentar sarajevo = mostar;
  336. //cout << sarajevo << endl;
  337. //}
  338. //catch (Izuzetak & err) {
  339. //cout << err << endl;
  340. //}
  341. #pragma endregion
  342. system("pause");
  343. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement