Advertisement
Luta036

PRII PolozeniPredmeti(ne radi konacna ocjena)

Jun 7th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.91 KB | None | 0 0
  1. #include<iostream>
  2. #include <cstring>
  3. #include <memory>
  4. /*
  5. 1. BROJ I VRSTA PARAMETARA MORAJU BITI IDENTICNI KAO U PRIMJERIMA. U SUPROTNOM SE RAD NEĆE BODOVATI
  6. 2. STAVITE KOMENTAR NA DIJELOVE CODE-A KOJE NE BUDETE IMPLEMENTIRALI
  7. 3. KREIRAJTE .DOC FAJL SA VAŠIM BROJEM INDEKSA ( NPR. IB160061.DOC BEZ IMENA I PREZIMENA), TE NA KRAJU ISPITA U NJEGA KOPIRAJTE RJEŠENJA VAŠIH ZADATAKA. NE PREDAVATI .TXT ILI .CPP FAJLOVE
  8. 4. TOKOM IZRADE ISPITA NIJE DOZVOLJENO KORIŠTENJE HELP-A
  9. 5. 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)
  10. 6. BEZ OBZIRA NA TO DA LI SU ISPITNI ZADACI URAĐENI, SVI STUDENTI KOJI SU PRISTUPILI ISPITU MORAJU PREDATI SVOJ RAD
  11. */
  12.  
  13. using namespace std;
  14. //narednu liniju code-a ignorisite, osim u slucaju da vam bude predstavljala smetnje u radu
  15. #pragma warning(disable:4996)
  16.  
  17. enum VrstaObaveze { Seminarski, Parcijalni1, Parcijalni2, Integralni, Prakticni };
  18. const char * charVrstaObaveze[]={ "Seminarski", "Parcijalni1", "Parcijalni2", "Integralni", "Prakticni" };
  19. struct Datum {
  20.     int * _dan, *_mjesec, *_godina;
  21.     void Unos(int d, int m, int g) {
  22.         _dan = new int(d);
  23.         _mjesec = new int(m);
  24.         _godina = new int(g);
  25.     }
  26.     void Ispis() {
  27.         cout  <<" " << *_dan << "/" << *_mjesec << "/" << *_godina << endl; //dodan space prije samo radi preglednosti
  28.     }
  29.     void Dealociraj() { delete _dan; delete _mjesec; delete _godina; }
  30.    
  31.     int datumDan() {
  32.         bool prijestupna = false;
  33.         if (*_godina % 4 == 0 && *_godina % 4 == 100 && * _godina % 400 == 0)
  34.             prijestupna = true;
  35.         if (*_mjesec == 1 || *_mjesec == 3 || *_mjesec == 5 || *_mjesec == 7 || *_mjesec == 8 || *_mjesec == 10 || *_mjesec == 12)
  36.             return *_dan + (*_mjesec * 31) + (*_godina * 365) + prijestupna;
  37.         if (*_mjesec == 4 || *_mjesec == 6 || *_mjesec == 9 || *_mjesec == 11)
  38.             return *_dan + (*_mjesec * 30) + (*_godina * 365) + prijestupna;
  39.         if (*_mjesec == 2)
  40.             return *_dan + (*_mjesec * 28) + (*_godina * 365) + prijestupna;
  41.     }
  42. };
  43. struct ObavezeNaPredmetu {
  44.     shared_ptr<VrstaObaveze> _vrstaObaveze;
  45.     Datum _datumIzvrsenja;
  46.     char * _napomena;
  47.     int _ocjena; // 5 - 10
  48.     void Unos(VrstaObaveze vrsta, Datum datum, int ocjena, const char * napomena) {
  49.         _vrstaObaveze = make_shared<VrstaObaveze>();
  50.         *_vrstaObaveze = vrsta;
  51.         _datumIzvrsenja.Unos(*datum._dan, *datum._mjesec, *datum._godina);
  52.         _ocjena = ocjena;
  53.         _napomena = new char[strlen(napomena) + 1];
  54.         strcpy_s(_napomena, strlen(napomena) + 1, napomena);
  55.     }
  56.     void Ispis() {
  57.         cout  << charVrstaObaveze[*_vrstaObaveze]  << " " << _ocjena << " " << _napomena;
  58.         _datumIzvrsenja.Ispis();
  59.         cout << endl;
  60.     }
  61.     void Dealociraj() {
  62.         _datumIzvrsenja.Dealociraj();
  63.         delete[] _napomena; _napomena = nullptr;
  64.     }
  65. };
  66.  
  67. const char * _kljucneRijeci[15] = { NULL }; /*da bi se odredjena obaveza na predmetu smatrala uspjesno izvrsenom,
  68.                                             u napomeni (objekta ObavezeNaPredmetu) ne smije stajati niti jedna od rijeci koja se nalazi u nizu _kljucneRijeci*/
  69.  
  70. struct PolozeniPredmet {
  71.     Datum _datumPolaganja;//datum koji ce se evidentirati kao datum kada je predmet polozen tj. kada je formirana konacna ocjena
  72.     char * _nazivPredmeta;
  73.     ObavezeNaPredmetu * _listaIzvrsenihObaveza;
  74.     int _trenutnoIzvrsenihObaveza;
  75.     int _minimalanBrojDana; //odnosi se na minimalan broj dana koji mora proci od izvrsenja pojedinih obaveza na predmetu (npr. 7 dana)
  76.     int _konacnaOcjena; //formira se na osnovu ocjena izvrsenih obaveza
  77.  
  78.     void Unos( const char * naziv, int minimalanBrojDana) {
  79.         _nazivPredmeta = new char[strlen(naziv) + 1];
  80.         strcpy_s(_nazivPredmeta, strlen(naziv) + 1, naziv);
  81.         _listaIzvrsenihObaveza = nullptr;
  82.         _trenutnoIzvrsenihObaveza = 0;
  83.         _minimalanBrojDana = minimalanBrojDana;
  84.         _konacnaOcjena = 0;
  85.     }
  86.     void Dealociraj() {
  87.         //_datumPolaganja.Dealociraj();
  88.         //ukinut jer ne radi mi funkcija za konacnu ocjenu
  89.         delete[] _nazivPredmeta; _nazivPredmeta = nullptr;
  90.         for (size_t i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  91.             _listaIzvrsenihObaveza[i].Dealociraj();
  92.         delete[]_listaIzvrsenihObaveza;
  93.     }
  94.     bool DodajIzvrsenuObavezu(VrstaObaveze vrsta, Datum datum, int ocjena, const char*napomena) {
  95.         /*Na osnovu vrijednosti primljenih parametara osigurati dodavanje novoizvrsene obaveze na predmetu.
  96.         Potrebno je onemoguciti dodavanje identicnih obaveza, a izmedju izvrsenja pojedinih obaveza mora proci
  97.         najmanje onoliko dana koliko je definisano vrijednoscu
  98.         atributa _minimalanBrojDana.
  99.         Identicna vrsta obaveze se moze dodati samo u slucaju da je prethodno dodana obaveza (identicne vrste) imala ocjenu 5 ili je
  100.         u napomeni sadrzavala neku od zabranjenih rijeci (definisanih nizom _kljucneRijeci).*/
  101.         int lokacijaIsteObaveze = -1;
  102.         //provjera ima li iste obaveze
  103.         for (int i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  104.         {
  105.             if (*_listaIzvrsenihObaveza[i]._vrstaObaveze == vrsta)
  106.                 lokacijaIsteObaveze = i;
  107.         }
  108.         if (lokacijaIsteObaveze != -1 && *_listaIzvrsenihObaveza[lokacijaIsteObaveze]._vrstaObaveze!=Seminarski)
  109.         {
  110.  
  111.             for (int i = 0; i < 15; i++)
  112.             {
  113.                 if (_kljucneRijeci[i] != NULL)
  114.                 {
  115.                     if (strstr(_kljucneRijeci[i], _listaIzvrsenihObaveza[lokacijaIsteObaveze]._napomena) != nullptr)
  116.                         return false;
  117.                 }
  118.             }
  119.             if (_listaIzvrsenihObaveza[lokacijaIsteObaveze]._ocjena != 5)
  120.                 return false;
  121.         }
  122.  
  123.         //provjera razlika u datumima
  124.         if(_listaIzvrsenihObaveza!=nullptr)
  125.         {
  126.             if (abs(datum.datumDan() - _listaIzvrsenihObaveza[_trenutnoIzvrsenihObaveza-1]._datumIzvrsenja.datumDan()) <= _minimalanBrojDana)
  127.                 return false;
  128.         }
  129.         ObavezeNaPredmetu *temp = new ObavezeNaPredmetu[_trenutnoIzvrsenihObaveza + 1];
  130.         for (int i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  131.         {
  132.             temp[i].Unos(*_listaIzvrsenihObaveza[i]._vrstaObaveze, _listaIzvrsenihObaveza[i]._datumIzvrsenja, _listaIzvrsenihObaveza[i]._ocjena,
  133.                 _listaIzvrsenihObaveza[i]._napomena);
  134.         }
  135.         temp[_trenutnoIzvrsenihObaveza].Unos(vrsta, datum, ocjena, napomena);
  136.         for (int i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  137.         {
  138.             _listaIzvrsenihObaveza[i].Dealociraj();
  139.         }
  140.         delete[]_listaIzvrsenihObaveza;
  141.         _listaIzvrsenihObaveza = new ObavezeNaPredmetu[_trenutnoIzvrsenihObaveza+1];
  142.         for (int i = 0; i < _trenutnoIzvrsenihObaveza+1; i++)
  143.         {
  144.             _listaIzvrsenihObaveza[i].Unos(*temp[i]._vrstaObaveze, temp[i]._datumIzvrsenja, temp[i]._ocjena, temp[i]._napomena);
  145.         }
  146.         _trenutnoIzvrsenihObaveza++;
  147.         //cout << "ocjena " << endl;
  148.         return true;
  149.     }
  150.     bool OcjenaIntegralni(int IntegralniIspit)
  151.     {
  152.             for (int i = 0; i < 15; i++)
  153.             {
  154.                 if (_kljucneRijeci[i] != NULL)
  155.                 {
  156.                     if (strstr(_kljucneRijeci[i], _listaIzvrsenihObaveza[IntegralniIspit]._napomena) != nullptr)
  157.                     {
  158.                         _konacnaOcjena = 5;
  159.                         return 5;
  160.                     }
  161.                 }
  162.             }
  163.             _datumPolaganja.Unos(*_listaIzvrsenihObaveza[IntegralniIspit]._datumIzvrsenja._dan, *_listaIzvrsenihObaveza[IntegralniIspit]._datumIzvrsenja._mjesec,
  164.                 *_listaIzvrsenihObaveza[IntegralniIspit]._datumIzvrsenja._godina);
  165.             _konacnaOcjena = _listaIzvrsenihObaveza[IntegralniIspit]._ocjena;
  166.             return _konacnaOcjena;
  167.     }
  168.     int OcjenaParcijalni(int Parcijalni1Ispit, int Parcijalni2Ispit, int brojSeminarskih, int PrakticniIspit, int lokacijaDatuma)
  169.     {
  170.         int suma = 0;
  171.         int brojocjena = 0;
  172.        
  173.             for (int i = 0; i < 15; i++)
  174.             {
  175.                 if (_kljucneRijeci[i] != NULL)
  176.                 {
  177.                     if (strstr(_kljucneRijeci[i], _listaIzvrsenihObaveza[Parcijalni1Ispit]._napomena) != nullptr ||
  178.                         strstr(_kljucneRijeci[i], _listaIzvrsenihObaveza[Parcijalni2Ispit]._napomena) != nullptr ||
  179.                         strstr(_kljucneRijeci[i], _listaIzvrsenihObaveza[PrakticniIspit]._napomena) != nullptr)
  180.                     {
  181.                         _konacnaOcjena = 5;
  182.                         return 5;
  183.                     }
  184.                 }
  185.                 for (int i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  186.                 {
  187.                     if (*_listaIzvrsenihObaveza[i]._vrstaObaveze == Seminarski)
  188.                     {
  189.                         if (_kljucneRijeci[i] != NULL)
  190.                         {
  191.                             if (strstr(_kljucneRijeci[i], _listaIzvrsenihObaveza[i]._napomena) != nullptr)
  192.                             {
  193.                                 _konacnaOcjena = 5;
  194.                                 return 5;
  195.                             }
  196.                         }
  197.                     }
  198.                 }
  199.             }
  200.  
  201.             suma = _listaIzvrsenihObaveza[Parcijalni1Ispit]._ocjena;
  202.             brojocjena++;
  203.             cout << "Suma " << suma << " broj" << brojocjena << endl;
  204.             suma += _listaIzvrsenihObaveza[Parcijalni2Ispit]._ocjena;
  205.             brojocjena++;
  206.             cout << "Suma " << suma << " broj" << brojocjena << endl;
  207.             suma += _listaIzvrsenihObaveza[PrakticniIspit]._ocjena;
  208.             brojocjena++;
  209.             cout << "Suma " << suma << " broj" << brojocjena << endl;
  210.             for (int i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  211.             {
  212.                 if (*_listaIzvrsenihObaveza[i]._vrstaObaveze == Seminarski)
  213.                 {
  214.                     suma += _listaIzvrsenihObaveza[i]._ocjena;
  215.                     brojocjena++;
  216.                 }
  217.                 cout << "Suma " << suma << " broj" << brojocjena << endl;
  218.             }
  219.             _konacnaOcjena = suma / brojocjena;
  220.             _datumPolaganja.Unos(*_listaIzvrsenihObaveza[lokacijaDatuma]._datumIzvrsenja._dan, *_listaIzvrsenihObaveza[lokacijaDatuma]._datumIzvrsenja._mjesec, *_listaIzvrsenihObaveza[lokacijaDatuma]._datumIzvrsenja._godina);
  221.             return _konacnaOcjena;
  222.        
  223.     }
  224.     int FormirajKonacnuOcjenu()
  225.     {
  226.         /*Konacna ocjene predstavlja prosjecnu ocjenu na predmetu
  227.         (prosjecnu ocjenu izvrsenih obaveza koje ispunjavaju uslove za uspjesno polaganje predmeta),
  228.         a za njeno formiranje student mora posjedovati polozen integralni ili dva parijcalna ispita.
  229.         Ukoliko je ispit polozen putem parcijalnih ispita, student takodjer mora imati pozitivno (ocjenom vecom od 5)
  230.         ocijenjena najmanje dva seminarska i jedan prakticni rad. Takodjer,
  231.         datum polaganja drugog parcijalnog ispita ne smije biti raniji (manji) od datuma polaganja prvog parcijalnog ispita.
  232.         Konacna ocjena ne smije biti formirana u slucaju da napomena bilo koje odbaveze (koja je ucestvovala u formiranju konacne ocjene)
  233.         sadrzi neku od zabranjenih rijeci (niz _kljucneRijeci).
  234.         U slucaju da neki od navedenih uslova nije zadovoljen konacna ocjena treba biti postavljena na vrijednost 5.
  235.         Ukoliko su ispunjeni svi uslovi, osim formiranja konacne ocjene, datum polaganja je potrebno postaviti na vrijednost datuma posljednje izvrsene obaveze
  236.         sa najvecom ocjenom.
  237.         */
  238.         int Parcijalni1Ispit = -1;
  239.         int Parcijalni2Ispit = -1;
  240.         int IntegralniIspit = -1;
  241.         int brojSeminarskih = 0;
  242.         int PrakticniIspit = -1;
  243.         int lokacijaDatuma=-1;
  244.         for (int i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  245.         {
  246.             if (*_listaIzvrsenihObaveza[i]._vrstaObaveze == Integralni && _listaIzvrsenihObaveza[i]._ocjena>5)
  247.                 IntegralniIspit = i;
  248.             if (*_listaIzvrsenihObaveza[i]._vrstaObaveze == Parcijalni1 && _listaIzvrsenihObaveza[i]._ocjena>5)
  249.                 Parcijalni1Ispit = i;
  250.             if (*_listaIzvrsenihObaveza[i]._vrstaObaveze == Parcijalni2 && _listaIzvrsenihObaveza[i]._ocjena>5)
  251.                 Parcijalni2Ispit = i;
  252.             if (*_listaIzvrsenihObaveza[i]._vrstaObaveze == Seminarski && _listaIzvrsenihObaveza[i]._ocjena>5)
  253.                 brojSeminarskih++;
  254.             if (*_listaIzvrsenihObaveza[i]._vrstaObaveze == Prakticni && _listaIzvrsenihObaveza[i]._ocjena>5)
  255.                 PrakticniIspit = i;
  256.             if (*_listaIzvrsenihObaveza[i]._vrstaObaveze != Integralni && _listaIzvrsenihObaveza[i]._ocjena>5)
  257.                 lokacijaDatuma = i;
  258.         }
  259.         if (IntegralniIspit != -1)
  260.             return OcjenaIntegralni(IntegralniIspit);
  261.         if (Parcijalni1Ispit != -1 && Parcijalni2Ispit != -1 && brojSeminarskih >1 && PrakticniIspit != -1)
  262.             return OcjenaParcijalni(Parcijalni1Ispit, Parcijalni2Ispit, brojSeminarskih, PrakticniIspit, lokacijaDatuma);
  263.  
  264.         _konacnaOcjena = 5;
  265.         return _konacnaOcjena;
  266.     }
  267.     void Ispis() {
  268.         cout << "obaveze" << endl;
  269.         for (int i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  270.         {
  271.             _listaIzvrsenihObaveza[i].Ispis();
  272.         }
  273.     }
  274.  
  275. };
  276. float PretragaRekurzivno(PolozeniPredmet predmet, VrstaObaveze vrsta, Datum od,Datum DO, int brojac, float suma, int brojacOcjena=0)
  277. {
  278.     if (brojac == predmet._trenutnoIzvrsenihObaveza)
  279.         return suma / (float)brojacOcjena;
  280.     if (*predmet._listaIzvrsenihObaveza[brojac]._vrstaObaveze == vrsta)
  281.     {
  282.         if (predmet._listaIzvrsenihObaveza[brojac]._datumIzvrsenja.datumDan() > od.datumDan() && predmet._listaIzvrsenihObaveza[brojac]._datumIzvrsenja.datumDan() < DO.datumDan())
  283.             return PretragaRekurzivno(predmet, vrsta, od, DO, brojac + 1, suma += predmet._listaIzvrsenihObaveza[brojac]._ocjena, brojacOcjena + 1);
  284.     }
  285.     return PretragaRekurzivno(predmet, vrsta, od, DO, brojac + 1, suma, brojacOcjena);
  286.     //*Rekurzivna funkcija treba vratiti prosjecnu ocjenu uspjesno izvrsenih obaveze na predmetu odredjene vrste u definisanom periodu.
  287.     //Izbjegavati koristenje globalnih varijabli*/
  288.  
  289. }
  290. int GetBrojObavezaIznadProsjeka(PolozeniPredmet predmet, float prosjek) {
  291.  
  292.     auto lambda = [predmet,prosjek]()
  293.     {
  294.         int brojac = 0;
  295.         for (int i = 0; i < predmet._trenutnoIzvrsenihObaveza; i++)
  296.         {
  297.             if (predmet._listaIzvrsenihObaveza[i]._ocjena > prosjek)
  298.                 brojac++;
  299.         }
  300.         return brojac;
  301.     };
  302.     return lambda();
  303. }
  304. void main() {
  305.     _kljucneRijeci[0] = "prepisivao";
  306.     _kljucneRijeci[1] = "ometao";
  307.     _kljucneRijeci[2] = "nije dostavio";
  308.     //_kljucneRijeci[3] = "slican";
  309.  
  310.     Datum datumSeminarski1, datumSeminarski2, datumParcijalni1, datumParcijalni2, datumIntegralni;
  311.     datumSeminarski1.Unos(10, 6, 2017);
  312.     datumSeminarski2.Unos(18, 6, 2017);
  313.     datumParcijalni1.Unos(22, 6, 2017);
  314.     datumParcijalni2.Unos(30, 6, 2017);
  315.     datumIntegralni.Unos(30, 7, 2017);
  316.  
  317.     PolozeniPredmet prII;
  318.     //naziv predmeta, minimalan broj dana
  319.     prII.Unos("Programiranje II", 7);
  320.     /*ObavezeNaPredmetu test;
  321.     test.Unos(Parcijalni1, datumParcijalni1, 5, "neka napomena");
  322.     test.Ispis();*/
  323.  
  324.     /*Na osnovu vrijednosti primljenih parametara osigurati dodavanje novoizvrsene obaveze na predmetu.
  325.     Potrebno je onemoguciti dodavanje identicnih obaveza, a izmedju izvrsenja pojedinih obaveza mora proci najmanje onoliko dana koliko je definisano vrijednoscu
  326.     atributa _minimalanBrojDana.
  327.     Identicna vrsta obaveze se moze dodati samo u slucaju da je prethodno dodana obaveza (identicne vrste) imala ocjenu 5 ili je
  328.     u napomeni sadrzavala neku od zabranjenih rijeci (definisanih nizom _kljucneRijeci).*/
  329.     if (prII.DodajIzvrsenuObavezu(Parcijalni1, datumParcijalni1, 6, "uslovno polozen ispit"))
  330.         cout << "Parcijalni 1...dodan" << endl;
  331.     if (prII.DodajIzvrsenuObavezu(Parcijalni2, datumParcijalni2, 5, "previse gresaka, a tokom ispita ometao druge studente"))
  332.         cout << "Parcijalni 2...dodan" << endl;
  333.     /*if (prII.DodajIzvrsenuObavezu(Parcijalni2, datumIntegralni, 8, "previse gresaka, a tokom ispita druge studente"))
  334.         cout << "Parcijalni 2...dodan" << endl;*/
  335.     if (prII.DodajIzvrsenuObavezu(Seminarski, datumSeminarski1, 8, "implementirani svi algoritmi"))
  336.         cout << "Seminarski1...dodan" << endl;
  337.     if (prII.DodajIzvrsenuObavezu(Seminarski, datumSeminarski2, 6, "rad slican kao kod studenta IB150388"))
  338.         cout << "Seminarski2...dodan" << endl;
  339.     //if (prII.DodajIzvrsenuObavezu(Integralni, datumIntegralni, 7, "sve uredu"))
  340.     //  cout << "Integralni...dodan" << endl;
  341.  
  342.     prII.Ispis();
  343.     /*Konacna ocjene predstavlja prosjecnu ocjenu na predmetu
  344.     (prosjecnu ocjenu izvrsenih obaveza koje ispunjavaju uslove za uspjesno polaganje predmeta),
  345.     a za njeno formiranje student mora posjedovati polozen integralni ili dva parijcalna ispita.
  346.     Ukoliko je ispit polozen putem parcijalnih ispita, student takodjer mora imati pozitivno (ocjenom vecom od 5)
  347.     ocijenjena najmanje dva seminarska i jedan prakticni rad. Takodjer,
  348.     datum polaganja drugog parcijalnog ispita ne smije biti raniji (manji) od datuma polaganja prvog parcijalnog ispita.
  349.     Konacna ocjena ne smije biti formirana u slucaju da napomena bilo koje odbaveze (koja je ucestvovala u formiranju konacne ocjene)
  350.     sadrzi neku od zabranjenih rijeci (niz _kljucneRijeci).
  351.     U slucaju da neki od navedenih uslova nije zadovoljen konacna ocjena treba biti postavljena na vrijednost 5.
  352.     Ukoliko su ispunjeni svi uslovi, osim formiranja konacne ocjene, datum polaganja je potrebno postaviti na vrijednost datuma posljednje izvrsene obaveze
  353.     sa najvecom ocjenom.
  354.     */
  355.     cout << "Konacna ocjena iz predmeta PRII je: " << prII.FormirajKonacnuOcjenu() << endl;
  356.  
  357.     datumParcijalni2.Unos(22, 7, 2017);
  358.     if (prII.DodajIzvrsenuObavezu(Parcijalni2, datumParcijalni2, 6, ""))
  359.         cout << "Parcijalni 2...dodan" << endl;
  360.     cout << "Konacna ocjena iz predmeta PRII je: " << prII.FormirajKonacnuOcjenu() << endl;
  361.     prII.Ispis();
  362.     Datum OD, DO; OD.Unos(1, 1, 2017); DO.Unos(1, 7, 2017);
  363.  
  364.     //*Rekurzivna funkcija treba vratiti prosjecnu ocjenu uspjesno izvrsenih obaveze na predmetu odredjene vrste u definisanom periodu.
  365.     //Izbjegavati koristenje globalnih varijabli*/
  366.     float prosjek = PretragaRekurzivno(prII, Seminarski, OD, DO, 0, 0);
  367.     cout << "Prosjecna ocjena izvrsenih obaveza je: " << prosjek << endl;
  368.  
  369.     //*Koristeci lambda-u, unutar funkcije GetBrojObavezaIznadProsjeka pronaci broj izvrsenih obaveza koje imaju istu ili vecu ocjenu od prosjecne*/
  370.     int iznadProsjeka = GetBrojObavezaIznadProsjeka(prII, prosjek);
  371.     cout << "Broj izvrsenih obaveza iznad prosjeka je: " << iznadProsjeka << endl;
  372.  
  373.     datumParcijalni1.Dealociraj();
  374.     datumParcijalni2.Dealociraj();
  375.     datumSeminarski1.Dealociraj();
  376.     datumSeminarski2.Dealociraj();
  377.     datumIntegralni.Dealociraj();
  378.     prII.Dealociraj();
  379.  
  380.     system("pause");
  381. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement