harme

Untitled

Sep 29th, 2016
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.44 KB | None | 0 0
  1. //narednu liniju code-a ignorisite, osim u slucaju da vam bude predstavljala smetnje u radu
  2. #pragma warning(disable:4996)
  3.  
  4. enum enumKursevi { HtmlCSSJavaScript, SoftwareEngeneeringFundamentals, MasteringSQL, WindowsSecurity };
  5. char *crt = "\n--------------------------------------------\n";
  6.  
  7. struct Datum {
  8. int * _dan, *_mjesec, *_godina;
  9. void Unos(int d, int m, int g) {
  10. _dan = new int(d);
  11. _mjesec = new int(m);
  12. _godina = new int(g);
  13. }
  14. void Ispis() { cout << *_dan << "/" << *_mjesec << "/" << *_godina; }
  15. void Dealociraj() { delete _dan; delete _mjesec; delete _godina; }
  16. };
  17.  
  18. struct Kurs {
  19. enumKursevi _kurs;
  20. Datum * _pocetak;
  21. Datum * _kraj;
  22. char * _imePredavaca;
  23. float _cijenaKursa;
  24.  
  25. void Unos(enumKursevi kurs, Datum pocetak, Datum kraj, char * imePredavaca, float cijenaKursa) {
  26. _kurs = kurs;
  27. _pocetak->Unos(*pocetak._dan, *pocetak._mjesec, *pocetak._godina);
  28. _kraj->Unos(*kraj._dan, *kraj._mjesec, *kraj._godina);
  29. int size = strlen(imePredavaca) + 1;
  30. imePredavaca = new char[size];
  31. strcpy_s(imePredavaca, size, _imePredavaca);
  32. _cijenaKursa = cijenaKursa;
  33. }
  34. void Ispis() {
  35. cout << _kurs << " " << _imePredavaca << " " << _cijenaKursa << " (";
  36. _pocetak->Ispis(); cout << " - "; _kraj->Ispis(); cout << ")";
  37. }
  38. void Dealociraj() {
  39. delete[] _imePredavaca; _imePredavaca = nullptr;
  40. _pocetak->Dealociraj();
  41. _kraj->Dealociraj();
  42. delete _pocetak; _pocetak = nullptr;
  43. delete _kraj; _kraj = nullptr;
  44. }
  45. };
  46. struct Polaznik {
  47. char * _imePrezime;
  48. Datum * _datumRodjenja;
  49. void Unos(char * imePrezime, Datum datumRodjenja) {
  50. int size = strlen(imePrezime) + 1;
  51. _imePrezime = new char[size];
  52. strcpy_s(_imePrezime, size, imePrezime);
  53. _datumRodjenja->Unos(*datumRodjenja._dan, *datumRodjenja._mjesec, *datumRodjenja._godina);
  54. }
  55. void Dealociraj() {
  56. delete[] _imePrezime; _imePrezime = nullptr;
  57. delete _datumRodjenja; _datumRodjenja = nullptr;
  58. }
  59. void Ispis() { cout << _imePrezime << "("; _datumRodjenja->Ispis(); cout << ")"; }
  60. };
  61. struct Prijava {
  62. Polaznik * _polaznik; //prijava moze biti pojedinacna ili grupna
  63. float * _uplaceniIznos;
  64. /*za svakog polaznika ce se cuvati podatak o iznosu uplate. uplaceni iznos svakog pojedinog polaznika treba biti jednak punoj cijeni kursa osim u sljedecim slucajevima:
  65. 1. prijave 2 ili 3 polaznika dobijaju 10% popusta na ukupnu cijenu kursa
  66. 2. prijave za vise od 3 polaznika dobijaju 15% na ukupnu cijenu kursa
  67. */
  68. int _trenutnoPolaznika;
  69. Kurs * _kurs; //prijava treba cuvati adresu (pokazivati) na postojeci kurs, a ne kreirati novi
  70. };
  71.  
  72. struct SkillsCentar {
  73. char * _nazivCentra;
  74. Kurs * _kursevi[50];//JEDAN EDUKACIJSKI CENTAR MOZE NUDITI NAJVISE 50 KURSEVA
  75. int _trenutnoKurseva;
  76. Prijava * _prijave;
  77. int _trenutnoPrijava;
  78. };
  79.  
  80. void main() {
  81.  
  82. /*
  83. 1. BROJ I TIPOVI PARAMETARA MORAJU BITI IDENTICNI ONIMA U TESTNOM CODE-U (OSIM UKOLIKO IMATE OPRAVDANU POTREBU ZA MODIFIKACIJOM). U SUPROTNOM SE RAD NEĆE BODOVATI
  84. 2. KREIRAJTE .DOC FAJL SA VAŠIM BROJEM INDEKSA ( NPR. IB130030.DOC BEZ IMENA I PREZIMENA), TE NA KRAJU ISPITA U NJEGA KOPIRAJTE RJEŠENJA VAŠIH ZADATAKA.
  85. NE PREDAVATI .TXT ILI .CPP FAJLOVE. TAKOĐER, UKLONITE SVE DIJELOVE CODE-A KOJI NISU IMPLEMENTIRANI
  86. 3. TOKOM IZRADE ISPITA NIJE DOZVOLJENO KORIŠTENJE HELP-A
  87. 4. TOKOM IZRADE ISPITA MOGU BITI POKRENUTA SAMO TRI PROGRAMA: PDF READER (ISPITNI ZADACI), MS VISUAL STUDIO, MS WORD (U KOJI ĆETE KOPIRATI VAŠA RJEŠENJA)
  88. 5. BEZ OBZIRA NA TO DA LI SU ISPITNI ZADACI URAĐENI, SVI STUDENTI KOJI SU PRISTUPILI ISPITU MORAJU PREDATI SVOJ RAD
  89. */
  90.  
  91. Datum datum1, datum2, datum3, datum4, datum5, datum6, rodjendan;
  92. datum1.Unos(26, 11, 2015);
  93. datum2.Unos(29, 5, 2016);
  94. datum3.Unos(5, 6, 2016);
  95. datum4.Unos(15, 8, 2016);
  96. datum5.Unos(13, 7, 2016);
  97. datum6.Unos(22, 9, 2016);
  98. rodjendan.Unos(15, 6, 1995);
  99.  
  100. Kurs softverski, html, sql, security;
  101. softverski.Unos(SoftwareEngeneeringFundamentals, datum1, datum2, "Emina Junuz", 1800);
  102. html.Unos(HtmlCSSJavaScript, datum2, datum3, "Larisa Tipura", 1000);
  103. sql.Unos(MasteringSQL, datum3, datum4, "Jasmin Azemovic", 2230);
  104. security.Unos(WindowsSecurity, datum3, datum4, "Adel Handzic", 4000);
  105.  
  106. Polaznik denis, zanin, indira, dubravka;
  107. denis.Unos("Denis Music", rodjendan);
  108. zanin.Unos("Zanin Vejzovic", rodjendan);
  109. indira.Unos("Indira Hamulic", rodjendan);
  110. dubravka.Unos("Dubravka Plosko", rodjendan);
  111.  
  112.  
  113. Prijava denisZaninDubravkaHtml, zaninIndiraHtml, indiraSql;
  114. denisZaninDubravkaHtml.Unos(&html);
  115. //700 predstavlja uplatu polaznika koji se prijavljuje na kurs
  116. if (denisZaninDubravkaHtml.DodajPolaznika(denis, 700))//tokom prijave polaznika nije potrebno uplatiti kompletan iznos, ali on mora biti veci od 50% iznosa kojeg je u tom momentu potrebno platiti (u zavisnosti od broja prijavljenih tj. ostvarenog popusta)
  117. cout << "Polaznik uspjesno dodan!" << endl;
  118. if (denisZaninDubravkaHtml.DodajPolaznika(zanin, 650))
  119. cout << "Polaznik uspjesno dodan!" << endl;
  120. if (denisZaninDubravkaHtml.DodajPolaznika(zanin, 650))//onemoguciti dupliranje polaznika na istoj prijavi
  121. cout << "Polaznik uspjesno dodan!" << endl;
  122. if (denisZaninDubravkaHtml.DodajPolaznika(dubravka, 430))//uplata ne zadovoljava kriterije
  123. cout << "Polaznik uspjesno dodan!" << endl;
  124.  
  125. if (denisZaninDubravkaHtml.DodajUplatu(zanin, 200))//polaznik mora biti prethodno dodan prijavi da bi mogao dodati novu uplatu
  126. cout << "Uplata uspjesno dodana" << endl;
  127.  
  128. zaninIndiraHtml.Unos(&html);
  129. if (zaninIndiraHtml.DodajPolaznika(zanin, 800))
  130. cout << "Polaznik uspjesno dodan!" << endl;
  131. if (zaninIndiraHtml.DodajPolaznika(indira, 750))
  132. cout << "Polaznik uspjesno dodan!" << endl;
  133.  
  134. float stanjeUplate = denisZaninDubravkaHtml.StatusUplate(zanin);//ako polaznik duguje novca funkcija vraca negativan iznos potrebne uplate
  135. cout << "Polaznik "; zanin.Ispis();
  136. if (stanjeUplate > 0)
  137. cout << " je u pretplati " << stanjeUplate << " KM" << endl;
  138. else
  139. cout << " je duzan uplatiti " << stanjeUplate * -1 << " KM" << endl;
  140.  
  141. SkillsCentar mostar;
  142. mostar.Unos("Skills Center Mostar");
  143. //jedan edukacijski centar moze moze nuditi vise istih kurseva (npr. MasteringSQL), ali novi kurs moze poceti tek 15 dana nakon zavrsetka prethodnog kursa npr.
  144. //ako prethodni kurs MasteringSQL traje 01.03.2016 - 01.04.2016, onda se novi kurs MasteringSQL moze poceti nakon 15.04.2016
  145. if (mostar.DodajKurs(softverski)) {
  146. cout << crt << "KURS USPJESNO REGISTROVAN" << crt;
  147. softverski.Ispis();
  148. cout << crt;
  149. }
  150. //nije moguce dodati prijavu onog kursa koji nije evidentiran (registrovan, ponudjen) u tom edukacijskom centru
  151. //moguce je dodati samo one prijave koje kod kojih ukupna uplata iznosi vise od 80% cijene kursa (za prijavljeni broj polaznika)
  152. if (mostar.DodajPrijavu(denisZaninDubravkaHtml)) {
  153. cout << crt << "PRIJAVA EVIDENTIRANA" << crt;
  154. denisZaninDubravkaHtml.Ispis();
  155. }
  156. if (mostar.DodajPrijavu(zaninIndiraHtml)) {
  157. cout << crt << "PRIJAVA EVIDENTIRANA" << crt;
  158. zaninIndiraHtml.Ispis();
  159. }
  160. int brojPolaznika = 0;
  161. //vraca niz polaznika koji nisu izmirili uplate
  162. Polaznik * polazniciDugovanja = mostar.PolazniciDugovanja(brojPolaznika);
  163.  
  164. cout << "Pronadjeno " << brojPolaznika << " polaznika koji nisu kompletirali svoje uplate --->>> ";
  165. for (size_t i = 0; i < brojPolaznika; i++)
  166. polazniciDugovanja[i].Ispis();
  167.  
  168. //PretragaRekurzivno - rekurzivna funkcija pronalazi najveci iznos duga ostvarenog u odredjenom edukacijskom centru
  169. cout << "Najveci dug iznosi " << PretragaRekurzivno(/*potrebni parametri*/) << endl;
  170. //ispisuje sve informacije o edukacijskom centru. prije ispisa sortirati sve prijave po visini dugovanja njenih polaznika
  171. mostar.Ispis();
  172.  
  173. //izvrsiti potrebne dealokacije
  174. system("pause");
  175. }
Add Comment
Please, Sign In to add comment