Advertisement
developer10

ispitni-februar

Jun 25th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<string>
  3. #include<vector>
  4. #include<regex>
  5.  
  6. using namespace std;
  7.  
  8. enum Predmeti { Matematika, Historija, Geografia, Hemija, Biologija, Engleski, Muzicko, Fizicko };
  9. enum Razredi { I1, I2, I3, II1, II2, II3, III1, III2, III3, IV1, IV2, IV3 };
  10.  
  11. char * ispisPredmeti[] = { "Matematika", "Historija", "Geografia", "Hemija", "Biologija", "Engleski", "Muzicko", "Fizicko" };
  12. char * ispisRazredi[] = { "I1", "I2", "I3", "II1", "II2", "II3", "III1", "III2", "III3", "IV1", "IV2", "IV3" };
  13.  
  14.  
  15. bool ProvjeriValidnostBrojaTelefona(string telefon)
  16. {
  17.     /*
  18.     broj telefona treba biti u formatu: +387(61)-222-333
  19.     */
  20.     string pravilo = "(\\+\\d{3})(\\(\\d{2}\\))-(\\d{3})-(\\d{3})";
  21.    
  22.     return regex_match(telefon, regex(pravilo));
  23. }
  24.  
  25.  
  26. template<class T1, class T2>
  27. class Kolekcija
  28. {
  29.     T1 * _elementi1;
  30.     T2 * _elementi2;
  31.     int _trenutno;
  32.  
  33. public:
  34.     Kolekcija()
  35.     {
  36.         _elementi1 = nullptr;
  37.         _elementi2 = nullptr;
  38.         _trenutno = 0;
  39.     }
  40.  
  41.     ~Kolekcija()
  42.     {
  43.         delete[] _elementi1; _elementi1 = nullptr;
  44.         delete[] _elementi2; _elementi2 = nullptr;
  45.     }
  46.  
  47.     Kolekcija(Kolekcija<T1, T2>& obj)
  48.     {
  49.         for (int i = 0; i < obj.GetTrenutno(); i++)
  50.             AddElement(obj.GetElement1(i), obj.GetElement2(i));
  51.     }
  52.  
  53.     Kolekcija& operator=(Kolekcija<T1, T2>& obj)
  54.     {
  55.         if (this != &obj)
  56.         {
  57.             delete[] _elementi1;
  58.             delete[] _elementi2;
  59.  
  60.             for (int i = 0; i < obj._trenutno; i++)
  61.                 AddElement(obj.GetElement1(i), obj.GetElement2(i));
  62.         }
  63.  
  64.         return *this;
  65.     }
  66.  
  67.     bool operator==(Kolekcija<T1, T2>& obj)
  68.     {
  69.         if (_trenutno != obj._trenutno)
  70.             return false;
  71.  
  72.         for (int i = 0; i < _trenutno; i++)
  73.             if (_elementi1[i] != obj._elementi1[i] || _elementi2[i] != obj._elementi2[i])
  74.                 return false;
  75.  
  76.         return true;
  77.     }
  78.  
  79.  
  80.     friend ostream& operator<< <>(ostream&, Kolekcija<T1, T2>&);
  81.  
  82.  
  83.     bool AddElement(const T1& e1, const T2& e2)
  84.     {
  85.         T1* _temp1 = new T1[_trenutno + 1];
  86.         T2* _temp2 = new T2[_trenutno + 1];
  87.  
  88.         for (int i = 0; i < _trenutno; i++){
  89.            
  90.             if (_elementi1[i] == e1 && _elementi2[i] == e2)
  91.                 return false;
  92.  
  93.             _temp1[i] = _elementi1[i];
  94.             _temp2[i] = _elementi2[i];
  95.         }
  96.  
  97.         delete[] _elementi1;
  98.         delete[] _elementi2;
  99.  
  100.         _elementi1 = _temp1;
  101.         _elementi2 = _temp2;
  102.  
  103.         _elementi1[_trenutno] = e1;
  104.         _elementi2[_trenutno] = e2;
  105.  
  106.         _trenutno++;
  107.  
  108.         return true;
  109.     }
  110.  
  111.     bool RemoveElement(int indeks)
  112.     {
  113.         if (indeks < 0 || indeks >= _trenutno)
  114.             return false;
  115.  
  116.  
  117.  
  118.         for (int i = 0; i < _trenutno; i++)
  119.         {
  120.             if (i == indeks)
  121.             {
  122.                 for (int j = i; j < _trenutno - 1; j++)
  123.                 {
  124.                     _elementi1[j] = _elementi1[j + 1];
  125.                     _elementi2[j] = _elementi2[j + 1];
  126.                 }
  127.  
  128.             }
  129.         }
  130.  
  131.         _trenutno--;
  132.  
  133.         T1* _temp1 = new T1[_trenutno];
  134.         T2* _temp2 = new T2[_trenutno];
  135.  
  136.         for (int i = 0; i < _trenutno; i++)
  137.         {
  138.             _temp1[i] = _elementi1[i];
  139.             _temp2[i] = _elementi2[i];
  140.         }
  141.  
  142.         delete[] _elementi1;
  143.         delete[] _elementi2;
  144.  
  145.         _elementi1 = _temp1;
  146.         _elementi2 = _temp2;
  147.  
  148.         return true;
  149.     }
  150.    
  151.  
  152.     int GetTrenutno(){ return _trenutno; }
  153.    
  154.     T1& GetElement1(int indeks){ return _elementi1[indeks]; }
  155.     T2& GetElement2(int indeks){ return _elementi2[indeks]; }
  156.  
  157.  
  158. };
  159. template<class T1, class T2>
  160. ostream& operator<< <>(ostream& COUT, Kolekcija<T1, T2>& obj)
  161. {
  162.     for (int i = 0; i < obj.GetTrenutno(); i++)
  163.         COUT << obj.GetElement1(i) << "-" << obj.GetElement2(i) << endl;
  164.  
  165.     return COUT;
  166. }
  167.  
  168.  
  169. class Datum
  170. {
  171.     int *_dan, *_mjesec, *_godina;
  172.  
  173. public:
  174.     Datum(int dan = 1, int mjesec = 1, int godina = 2000) {
  175.         _dan = new int(dan);
  176.         _mjesec = new int(mjesec);
  177.         _godina = new int(godina);
  178.     }
  179.  
  180.     Datum(const Datum&obj) {
  181.         _dan = new int(*obj._dan);
  182.         _mjesec = new int(*obj._mjesec);
  183.         _godina = new int(*obj._godina);
  184.     }
  185.  
  186.     ~Datum() {
  187.         delete _dan; _dan = nullptr;
  188.         delete _mjesec; _mjesec = nullptr;
  189.         delete _godina; _godina = nullptr;
  190.     }
  191.  
  192.     Datum& operator=(const Datum& obj)
  193.     {
  194.         if (this != &obj)
  195.         {
  196.             _dan = new int(*obj._dan);
  197.             _mjesec = new int(*obj._mjesec);
  198.             _godina = new int(*obj._godina);
  199.         }
  200.  
  201.         return *this;
  202.     }
  203.  
  204.  
  205.     bool operator==(const Datum& obj)
  206.     {
  207.         return (*_dan == *obj._dan && *_mjesec == *obj._mjesec && *_godina == *obj._godina);
  208.     }
  209.  
  210.     friend ostream& operator<< (ostream &COUT, const Datum &obj) {
  211.         COUT << *obj._dan << " " << *obj._mjesec << " " << *obj._godina;
  212.         return COUT;
  213.     }
  214. };
  215.  
  216.  
  217. class Osoba
  218. {
  219. protected:
  220.     char * _imePrezime;
  221.     Datum * _datumRodjenja;
  222.     string _brojTelefona;
  223. public:
  224.     Osoba(char * imePrezime = "<ime prezime>", Datum datum = Datum())
  225.     {
  226.         _imePrezime = new char[strlen(imePrezime) + 1];
  227.         strcpy_s(_imePrezime, strlen(imePrezime) + 1, imePrezime);
  228.         _datumRodjenja = new Datum(datum);
  229.         _brojTelefona = "";
  230.     }
  231.  
  232.     Osoba(const Osoba& obj) :_brojTelefona(obj._brojTelefona)
  233.     {
  234.         _imePrezime = new char[strlen(obj._imePrezime) + 1];
  235.         strcpy_s(_imePrezime, strlen(obj._imePrezime) + 1, obj._imePrezime);
  236.         _datumRodjenja = new Datum(*obj._datumRodjenja);
  237.     }
  238.  
  239.     Osoba& operator=(const Osoba& obj)
  240.     {
  241.         if (this != &obj)
  242.         {
  243.             int size = strlen(obj._imePrezime) + 1;
  244.             delete[] _imePrezime;
  245.             _imePrezime = new char[size];
  246.             strcpy_s(_imePrezime, size, obj._imePrezime);
  247.  
  248.             _datumRodjenja = new Datum(*obj._datumRodjenja);
  249.  
  250.             _brojTelefona = obj._brojTelefona;
  251.         }
  252.         return *this;
  253.     }
  254.  
  255.     ~Osoba() {
  256.         delete[]_imePrezime; _imePrezime = nullptr;
  257.         delete _datumRodjenja; _datumRodjenja = nullptr;
  258.     }
  259.  
  260.  
  261.     bool operator==(const Osoba& obj)
  262.     {
  263.         return (strcmp(_imePrezime, obj._imePrezime) == 0 && *_datumRodjenja == *obj._datumRodjenja && _brojTelefona == obj._brojTelefona);
  264.     }
  265.  
  266.     friend ostream& operator<<(ostream&, const Osoba&);
  267.  
  268.     bool setBrojTelefona(string brojTelefona)
  269.     {
  270.         if (ProvjeriValidnostBrojaTelefona(brojTelefona))
  271.         {
  272.             _brojTelefona = brojTelefona;
  273.             return true;
  274.         }
  275.         return false;
  276.     }
  277.  
  278.     char* GetImePrezime(){ return _imePrezime; }
  279.  
  280. };
  281.  
  282. ostream& operator<<(ostream& COUT, const Osoba& obj)
  283. {
  284.     COUT << "Ime i prezime: " << obj._imePrezime << endl;
  285.     COUT << "Datum rodjenja: " << *obj._datumRodjenja << endl;
  286.     COUT << "Broj telefona: " << obj._brojTelefona << endl;
  287.     COUT << "-------------------------------------\n";
  288.     return COUT;
  289. }
  290.  
  291.  
  292. class Nastavnik :public Osoba
  293. {
  294.     Kolekcija<Predmeti, Razredi> * _predmetiRazredi;
  295.  
  296. public:
  297.     Nastavnik(char* ip = "<ime prezime>", Datum date = Datum()) :Osoba(ip, date)
  298.     {
  299.         _predmetiRazredi = new Kolekcija<Predmeti, Razredi>;
  300.     }
  301.  
  302.     ~Nastavnik(){ delete _predmetiRazredi; _predmetiRazredi = nullptr; }
  303.  
  304.  
  305.     Nastavnik(const Nastavnik& obj) :Osoba(obj)
  306.     {
  307.         _predmetiRazredi = new Kolekcija<Predmeti, Razredi>(*obj._predmetiRazredi);
  308.     }
  309.  
  310.     Nastavnik& operator=(const Nastavnik& obj)
  311.     {
  312.         if (this != &obj)
  313.         {
  314.             this->Osoba::operator=(obj);
  315.  
  316.             delete _predmetiRazredi;
  317.             _predmetiRazredi = new Kolekcija<Predmeti, Razredi>(*obj._predmetiRazredi);
  318.         }
  319.         return *this;
  320.     }
  321.  
  322.  
  323.     bool operator==(const Nastavnik& obj)
  324.     {
  325.         return (this->Osoba::operator==(obj) && *_predmetiRazredi == *obj._predmetiRazredi);
  326.     }
  327.  
  328.  
  329.     bool AddPredmetRazred(const Predmeti& e1, const Razredi& e2)
  330.     {
  331.         // nastavniku se moze dodati isti predmet, ali najvise 2 puta
  332.         // pri cemu moraju biti u razlicitim odjeljenjima na razlicitim godinama
  333.         int brojac = 0;
  334.  
  335.         for (int i = 0; i < _predmetiRazredi->GetTrenutno(); i++){
  336.             // predmet je isti. Funkcija AddElement() kolekcije ce svakako sprijeciti
  337.             // pokusaj dodavanja kada je i razred (e2) isti
  338.             if (_predmetiRazredi->GetElement1(i) == e1){
  339.  
  340.                 brojac++;
  341.  
  342.                 // u nizu predmeta, sto se godina tice imamo indekse:
  343.                 // Ir: 0-1-2, IIr: 3-4-5, IIIr: 6-7-8, IVr: 9-10-11
  344.  
  345.                 string unos = to_string(e2);
  346.                 string pravila[4] = { "[0-2]", "[3-5]", "[6-8]", "9|10|11" };
  347.  
  348.                 // ako se ovdje poklopi element niza pravila sa varijablom "i", znaci da se radi o istoj godini
  349.                 // i tom slucaju necemo dodati ovaj predmet (koji se ponavlja) ovom nastavniku
  350.                 for (int i = 1; i <= 4; i++)
  351.                     // utvrdjujemo na kojoj poziciji "i" (odgovara razredu 1-4) je dati (indeks) razreda
  352.                     if (regex_match(unos, regex(pravila[i - 1])))
  353.                         // ista provjera ali za razred postojeceg predmeta;
  354.                         // ako se takodje slaze, tj. spada u istu godinu, izlazimo
  355.                         if (regex_match(to_string(_predmetiRazredi->GetElement2(i)), regex(pravila[i - 1])))
  356.                             return false;
  357.             }
  358.         }
  359.  
  360.         // debug
  361.         //cout << "Nastavniku " << _imePrezime << " dodan predmet " << ispisPredmeti[e1] << " u odjeljenju " << ispisRazredi[e2] << endl;
  362.  
  363.         return (brojac < 2) ? _predmetiRazredi->AddElement(e1, e2) : false;
  364.     }
  365.  
  366.     bool RemovePredmetRazred(const Predmeti& predmet)
  367.     {
  368.         for (int i = 0; i < _predmetiRazredi->GetTrenutno(); i++)
  369.         {
  370.             if (_predmetiRazredi->GetElement1(i) == predmet)
  371.                 return _predmetiRazredi->RemoveElement(i);
  372.         }
  373.  
  374.         return false;
  375.     }
  376.  
  377.     Kolekcija<Predmeti, Razredi>& getPredmetiRazredi(){ return *_predmetiRazredi; };
  378.  
  379. };
  380.  
  381.  
  382. class Ucenik : public Osoba
  383. {
  384.     int _brojUDnevniku;
  385.     Razredi _razred;
  386.     vector<Nastavnik *> _nastavnici;
  387.     Kolekcija<Predmeti, int> _predmetiOcjene;
  388.  
  389. public:
  390.     // Ucenik denis("Denis Music", Datum(8, 10, 1990), 3, III1);
  391.     Ucenik(
  392.         char* ip = "<ime prezime>", Datum date = Datum(),
  393.         int dnevnikBr = -1, Razredi razred = (Razredi)0)
  394.         :Osoba(ip, date), _razred(razred), _predmetiOcjene()
  395.     {
  396.         _brojUDnevniku = dnevnikBr;
  397.     }
  398.  
  399.  
  400.     Ucenik(Ucenik& obj) :Osoba(obj), _razred(obj._razred), _predmetiOcjene(obj._predmetiOcjene)
  401.     {
  402.         cout << "Razred obj: " << obj._razred << endl;
  403.         _brojUDnevniku = obj._brojUDnevniku;
  404.     }
  405.  
  406.  
  407.     bool AddNastavnik(Nastavnik& nastavnik)
  408.     {
  409.         for (size_t i = 0; i < _nastavnici.size(); i++)
  410.         {
  411.             if (*_nastavnici[i] == nastavnik){
  412.                 cout << "Ovaj nastavnik je vec dodan ovom uceniku!" << endl;
  413.                 return false;
  414.             }
  415.         }
  416.  
  417.         for (int i = 0; i < nastavnik.getPredmetiRazredi().GetTrenutno(); i++)
  418.             if (nastavnik.getPredmetiRazredi().GetElement2(i) == _razred)
  419.             {
  420.                 _nastavnici.push_back(&nastavnik);
  421.                 return true;
  422.             }
  423.  
  424.         return false;
  425.     }
  426.  
  427.  
  428.     bool AddPredmetOcjenu(const Predmeti& predmet, int ocjena)
  429.     {
  430.         /*  ucenik mora imati nastavnika u _nastavnici koji
  431.         *   predaje predmet (_predmetiRazredi) koji pokusavam dodati
  432.         */
  433.         for (size_t i = 0; i < _nastavnici.size(); i++)
  434.         {
  435.             for (int j = 0; j < _nastavnici[i]->getPredmetiRazredi().GetTrenutno(); j++)
  436.             {
  437.                 if (predmet == _nastavnici[i]->getPredmetiRazredi().GetElement1(j)){
  438.                     _predmetiOcjene.AddElement(predmet, ocjena);
  439.                     return true;
  440.                 }
  441.             }
  442.         }
  443.  
  444.         return false;
  445.     }
  446.  
  447.     friend ostream& operator<<(ostream&, const Ucenik&);
  448.  
  449.     int GetBrUDnevniku(){ return _brojUDnevniku; }
  450.     Razredi& GetRazred(){ return _razred; }
  451.     vector<Nastavnik*>& getNastavnici(){ return _nastavnici; }
  452.  
  453.     Kolekcija<Predmeti, int>& getPredmetiOcjene(){ return _predmetiOcjene; }
  454.  
  455.     double GetProsjekByNastavnik(char* imePrezimeNastavnika)
  456.     {
  457.         int suma = 0, brPredmetaPoNastavniku = 0;
  458.  
  459.         for (size_t i = 0; i < _nastavnici.size(); i++)
  460.         {
  461.             if (strcmp(_nastavnici[i]->GetImePrezime(), imePrezimeNastavnika) == 0)
  462.             {
  463.                 for (int j = 0; j < _nastavnici[i]->getPredmetiRazredi().GetTrenutno(); j++)
  464.                 {
  465.                     for (int k = 0; k < _predmetiOcjene.GetTrenutno(); k++)
  466.                     {
  467.                         if (_nastavnici[i]->getPredmetiRazredi().GetElement1(j) == _predmetiOcjene.GetElement1(k)){
  468.                             suma += _predmetiOcjene.GetElement2(k);
  469.                             brPredmetaPoNastavniku++;
  470.                         }
  471.                     }
  472.                 }
  473.             }
  474.         }
  475.  
  476.         return (double)suma / brPredmetaPoNastavniku;
  477.     }
  478. };
  479.  
  480. ostream& operator<<(ostream& COUT, Ucenik& obj)
  481. {
  482.     COUT << static_cast<const Osoba&>(obj) << endl;
  483.     COUT << "Broj u dnevniku: " << obj.GetBrUDnevniku() << endl;
  484.     COUT << "Odjeljenje: " << ispisRazredi[obj.GetRazred()] << endl;
  485.     COUT << "\tPredmeti i ocjene" << endl;
  486.     COUT << obj.getPredmetiOcjene() << endl;
  487.     return COUT;
  488. }
  489.  
  490.  
  491. char* crt = "\n==============================\n";
  492.  
  493. void main()
  494. {
  495.  
  496.     /****************************************************************************
  497.     1. SVE KLASE TREBAJU POSJEDOVATI ADEKVATAN DESTRUKTOR
  498.     2. NAMJERNO IZOSTAVLJANJE KOMPLETNIH I/ILI POJEDINIH DIJELOVA DESTRUKTORA KOJI UZROKUJU RUNTIME ERROR CE BITI OZNACENO KAO "RE"
  499.     3. SPASAVAJTE PROJEKAT KAKO BI SE SPRIJECILO GUBLJENJE URADJENOG ZADATKA
  500.     4. PROGRAMSKI CODE SE TAKODJER NALAZI U FAJLU CODE_.TXT
  501.     5. NAZIV I LISTA PARAMETARA FUNKCIJA MORAJU BITI IDENTIČNI ONIMA KOJI SU KORIŠTENI U TESTNOM CODE-U.
  502.     6. NIJE POTREBNO BACATI IZUZETKE. SVE FUNKCIJE VRACAJU TRUE ILI FALSE
  503.     ****************************************************************************/
  504.  
  505. #pragma region TestiranjeDatuma
  506.  
  507.     Datum danas(26, 11, 2015);
  508.     Datum sutra(danas);
  509.     Datum prekosutra;
  510.     prekosutra = danas;
  511.     cout << danas << endl << sutra << endl << prekosutra << crt;
  512.  
  513. #pragma endregion
  514.  
  515.  
  516.  
  517. #pragma region TestiranjeKolekcije
  518.  
  519.     //Kolekcija<int, int> kolekcija1;
  520.     //int brojElemenata = 15;
  521.     //for (size_t i = 0; i < brojElemenata; i++)
  522.     //  kolekcija1.AddElement(i, i);
  523.  
  524.     //kolekcija1.RemoveElement(2);//uklanja element na osnovu lokacije
  525.     //cout << kolekcija1.GetElement1(0) << " " << kolekcija1.GetElement2(0) << endl;
  526.     //cout << kolekcija1 << endl;
  527.  
  528.     //Kolekcija<int, int> kolekcija2;
  529.     //kolekcija2 = kolekcija1;
  530.     //cout << kolekcija2 << crt;
  531.  
  532.     //if (kolekcija1.GetTrenutno() == kolekcija2.GetTrenutno())
  533.     //  cout << "ISTI BROJ ELEMENATA" << endl;
  534.  
  535.     //Kolekcija<int, int> kolekcija3(kolekcija2);
  536.     //cout << kolekcija3 << crt;
  537.  
  538. #pragma endregion
  539.  
  540.  
  541. #pragma region TestiranjeNastavnika
  542.  
  543.     Nastavnik jasmin("Jasmin Azemovic", Datum(15, 2, 1980));
  544.     Nastavnik adel("Adel Handzic", Datum(15, 10, 1981));
  545.  
  546.     ///*NASTAVNIK MOZE PREDAVATI ISTI PREDMET, ALI TO MORA BITI U RAZLICITIM ODJELJENJIMA I NAJVISE U DVA RAZREDA (NA DVIJE RAZLICITE GODINE)*/
  547.  
  548.     if (jasmin.AddPredmetRazred(Matematika, I1))
  549.         cout << "Predmeti dodan" << endl;
  550.  
  551.     if (jasmin.AddPredmetRazred(Historija, I1))
  552.         cout << "Predmeti dodan" << endl;
  553.  
  554.     if (jasmin.AddPredmetRazred(Geografia, I1))
  555.         cout << "Predmeti dodan " << ispisRazredi[I1] << endl;
  556.  
  557.     if (jasmin.AddPredmetRazred(Geografia, II2))
  558.         cout << "Predmeti dodan " << ispisRazredi[II2] << endl;
  559.  
  560.     if (jasmin.AddPredmetRazred(Geografia, IV2))
  561.         cout << "Predmeti dodan " << ispisRazredi[IV2] << endl;
  562.  
  563.     if (adel.AddPredmetRazred(Historija, III1))
  564.         cout << "Predmeti dodan" << endl;
  565.  
  566.     if (adel.RemovePredmetRazred(Historija))
  567.         cout << "Predmet uklonjen!" << endl;
  568.  
  569.     Nastavnik goran(adel);
  570.     if (goran == adel)
  571.         cout << "Nastavnici identicni" << endl;
  572.  
  573.     goran = jasmin;
  574.     if (goran == jasmin)
  575.         cout << "Nastavnici identicni" << endl;
  576.  
  577.     Kolekcija<Predmeti, Razredi> & predmetiRazredi = jasmin.getPredmetiRazredi();
  578.  
  579.     if (!jasmin.setBrojTelefona("+38761111222"))
  580.         cout << "Broj telefona nije dodan!" << endl;
  581.     if (!jasmin.setBrojTelefona("+387-61-111-222"))
  582.         cout << "Broj telefona nije dodan!" << endl;
  583.     if (jasmin.setBrojTelefona("+387(61)-111-222"))
  584.         cout << "Broj telefona uspjesno dodan!" << endl;
  585.  
  586. #pragma endregion
  587.  
  588. #pragma region TestiranjeUcenika
  589.  
  590.     Ucenik denis("Denis Music", Datum(8, 10, 1990), 3, I1); // izmijenio sam odjeljenje (III1 => I1)
  591.     Ucenik elmin("Elmin Sudic", Datum(15, 6, 1993), 1, I1);
  592.     Ucenik adil("Adil Joldic", Datum(13, 8, 1992), 2, II1);
  593.  
  594.     ///*VODITI RACUNA DA SE DODAJU REFERENCE NA NASTAVNIKE KAKO BI SVI UCENICI DIJELILI ISTE INFORMACIJE O NASTAVNICIMA U SLUCAJU DA SE NASTAVNIKU DODA NEKI PREDMET*/
  595.  
  596.     ///*ZA USPJESNO DODAVANJE, NASTAVNIK MORA POSJEDOVATI (PREDAVATI) NAJMANJE JEDAN PREDMET U TOM RAZREDU */
  597.     if (denis.AddNastavnik(jasmin))
  598.         cout << "Nastavnik uspjesno dodan" << endl;
  599.    
  600.  
  601.     /*ONEMOGUCITI DODAVANJE ISTIH NASTAVNIKA; POJAM ISTI PODRAZUMIJEVA IDENTICNE VRIJEDNOSTI SVIH ATRIBUTA*/
  602.     if (denis.AddNastavnik(adel))
  603.         cout << "Nastavnik uspjesno dodan" << endl;
  604.    
  605.  
  606.     /*DA BI SE DODALA OCJENA ZA ODREDJENI PREDMET UCENIK MORA POSJEDOVATI NASTAVNIKA KOJI PREDAJE TAJ PREDMET*/
  607.    
  608.     if (denis.AddPredmetOcjenu(Matematika, 3))
  609.         cout << "Ocjena uspjesno dodana" << endl;
  610.     if (denis.AddPredmetOcjenu(Historija, 4))
  611.         cout << "Ocjena uspjesno dodana" << endl;
  612.  
  613.     vector<Nastavnik*> & nastavnici = denis.getNastavnici();
  614.     cout << "Ucenik Denis ima dodijeljena " << nastavnici.size() << " nastavnika" << endl;
  615.  
  616.     Kolekcija<Predmeti, int> & uspjeh = denis.getPredmetiOcjene();
  617.     cout << "Denis ima " << uspjeh.GetTrenutno() << " polozenih predmeta" << endl;
  618.     cout << "Prosjecna ocjena kod nastavnika Jasmin Azemovic je " << denis.GetProsjekByNastavnik("Jasmin Azemovic") << endl;
  619.  
  620.     Ucenik denis2(denis);
  621.     cout << denis2 << endl;
  622.  
  623. #pragma endregion
  624.  
  625.     //system("pause");
  626. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement