Advertisement
EmirM

TestiranjeConstaSaIndexator

Jan 27th, 2016
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <regex>
  3. #include <exception>
  4.  
  5. using namespace std;
  6.  
  7. //int brojindeks = 1;
  8.  
  9. class Indexator{
  10.  
  11.     int brojindex;
  12.     int * removaniindexi;
  13.     int brojremovanih;
  14.  
  15. public:
  16.  
  17.     Indexator() {
  18.  
  19.         removaniindexi = new int[1];
  20.         //removaniindexi[0] = 0;
  21.         brojindex = 1;
  22.         brojremovanih = 0;
  23.  
  24.     }
  25.  
  26.     void putremovani (int broj) {
  27.    
  28.         if (brojremovanih == 0) {
  29.  
  30.             removaniindexi[0] = broj;
  31.             brojremovanih++;
  32.         }
  33.         else {
  34.  
  35.             brojremovanih++;
  36.  
  37.             int * temp = new int[brojremovanih];
  38.  
  39.             for (int i = 0; i < brojremovanih-1; i++) {
  40.  
  41.                 temp[i] = removaniindexi[i];
  42.  
  43.             }
  44.  
  45.             temp[brojremovanih - 1] = broj;
  46.  
  47.             delete[] removaniindexi;
  48.  
  49.             removaniindexi = temp;
  50.  
  51.         }
  52.  
  53.     }
  54.  
  55.     int operator++ () {
  56.  
  57.         int temp = brojindex;
  58.  
  59.         for (int i = 0; i < brojremovanih; i++) {
  60.  
  61.             /*if (i >= brojindex) {
  62.                 for (int j = 0; j < temp; j++) {
  63.                     if (brojindex == removaniindexi[i])
  64.                        
  65.                             brojindex++;
  66.                 }
  67.             }*/
  68.  
  69.             if (removaniindexi[i] == temp)
  70.                 return ++brojindex;
  71.  
  72.         }
  73.  
  74.         return brojindex++;
  75.  
  76.     }
  77.  
  78.     int operator-- () {
  79.  
  80.         return brojindex--;
  81.  
  82.     }
  83.  
  84.     void settozero() {
  85.  
  86.         brojindex = 1;
  87.  
  88.     }
  89.  
  90.  
  91.  
  92. } indexator;
  93.  
  94. class Greska: public exception{
  95.  
  96.     int linijakoda;
  97.     char * funkcija;
  98.    
  99. public:
  100.  
  101.     Greska(int brln, char* funkc, char * desc) : exception(desc) {
  102.  
  103.         linijakoda = brln;
  104.  
  105.         int size = strlen(funkc) + 1;
  106.  
  107.         funkcija = new char[size];
  108.  
  109.         strcpy_s(funkcija, size, funkc);
  110.  
  111.     }
  112.  
  113.     void Info() {
  114.    
  115.         cout << "Linija koda: " << linijakoda << endl;
  116.         cout << funkcija;
  117.         what();
  118.    
  119.     }
  120.  
  121. };
  122.  
  123. template<class T1, class T2>
  124. class Kolekcija{
  125.     T1 * _elementi1;
  126.     T2 * _elementi2;
  127.     int _trenutnoElemenata;
  128.  
  129. public:
  130.  
  131.     Kolekcija() {
  132.  
  133.         _elementi1 = nullptr;
  134.         _elementi2 = nullptr;
  135.         //_elementi1 = new T1[1];
  136.         //_elementi2 = new T2[1];
  137.         _trenutnoElemenata = 0;
  138.  
  139.     }
  140.  
  141.     Kolekcija(T1 obj, T2 obj2) {
  142.        
  143.         _elementi1 = new T1[1];
  144.         _elementi2 = new T2[1];
  145.         _elementi1[0] = obj;
  146.         _elementi2[0] = obj2;
  147.         _trenutnoElemenata = 1;
  148.        
  149.  
  150.     }
  151.  
  152.     Kolekcija(Kolekcija & kol) {
  153.    
  154.         _elementi1 = new T1[kol._trenutnoElemenata];
  155.         _elementi2 = new T2[kol._trenutnoElemenata];
  156.  
  157.         for (int i = 0; i < kol._trenutnoElemenata; i++) {
  158.        
  159.             _elementi1[i] = kol._elementi1[i];
  160.             _elementi2[i] = kol._elementi2[i];
  161.  
  162.         }
  163.  
  164.         _trenutnoElemenata = kol._trenutnoElemenata;
  165.  
  166.     }
  167.  
  168.     ~Kolekcija() { delete[] _elementi1; _elementi1 = nullptr; delete[] _elementi2; _elementi2 = nullptr; }
  169.  
  170.     bool AddElement(T1 obj, T2 obj2) {
  171.    
  172.         for (int i = 0; i < _trenutnoElemenata; i++) {
  173.  
  174.             if (obj == _elementi1[i] || obj2 == _elementi2[i])
  175.                 return false;
  176.  
  177.         }
  178.  
  179.         if (typeid(T1) == typeid(Student))
  180.             indexator.settozero();
  181.        
  182.         T1 * temp = new T1[_trenutnoElemenata+1];
  183.         T2 * temp2 = new T2[_trenutnoElemenata+1];
  184.  
  185.         for (int i = 0; i < _trenutnoElemenata; i++) {
  186.        
  187.             temp[i] = _elementi1[i];
  188.             temp2[i] = _elementi2[i];
  189.        
  190.         }
  191.        
  192.             delete[] _elementi1;
  193.             delete[] _elementi2;
  194.            
  195.             _elementi1 = temp;
  196.  
  197.         _elementi1[_trenutnoElemenata] = obj;
  198.  
  199.         _elementi2 = temp2;
  200.        
  201.         //temp = nullptr;
  202.        
  203.         _elementi2[_trenutnoElemenata] = obj2;
  204.        
  205.  
  206.        
  207.        
  208.         //temp2 = nullptr;
  209.  
  210.         _trenutnoElemenata++;
  211.  
  212.         return true;
  213.  
  214.     }
  215.  
  216.    
  217.     bool RemoveElement(T1 obj) {
  218.  
  219.         if (_trenutnoElemenata == 0) {
  220.             return false;
  221.         }
  222.  
  223.         int lokacijska = -1;
  224.    
  225.         for (int i = 0; i < _trenutnoElemenata; i++) {
  226.        
  227.             if (_elementi1[i] == obj) {
  228.  
  229.                 /*for (int j = i; j < _trenutnoElemenata-1; j++) {
  230.                
  231.                     _elementi1[j] = _elementi1[j+1];
  232.                     _elementi2[j] = _elementi2[j+1];
  233.  
  234.                 }*/
  235.  
  236.                 lokacijska = i+1;
  237.  
  238.             }
  239.                
  240.         }
  241.  
  242.         if (lokacijska == -1)
  243.             return false;
  244.  
  245.         if (typeid(T1) == typeid(Student)) {
  246.             indexator.settozero();
  247.             indexator.putremovani(lokacijska+1);
  248.         }
  249.        
  250.        
  251.  
  252.         T1 * temp = new T1[_trenutnoElemenata];
  253.         T2 * temp2 = new T2[_trenutnoElemenata];
  254.  
  255.         _trenutnoElemenata--;
  256.  
  257.         for (int i = 0; i < lokacijska; i++) {
  258.  
  259.             temp[i] = _elementi1[i];
  260.             temp2[i] = _elementi2[i];
  261.  
  262.         }
  263.  
  264.         for (int i = lokacijska; i < _trenutnoElemenata+1; i++) {
  265.        
  266.             temp[i-1] = _elementi1[i];
  267.             temp2[i-1] = _elementi2[i];
  268.  
  269.         }
  270.  
  271.         delete[] _elementi1;
  272.         _elementi1 = nullptr;
  273.         delete[] _elementi2;
  274.         _elementi2 = nullptr;
  275.  
  276.         _elementi1 = temp;
  277.         temp = nullptr;
  278.  
  279.         _elementi2 = temp2;
  280.         temp2 = nullptr;
  281.  
  282.         return true;
  283.  
  284.     }
  285.  
  286.     Kolekcija operator+ (Kolekcija<T1,T2> obj) {
  287.    
  288.         Kolekcija returnani(*this);
  289.  
  290.         for (int i = 0; i < obj._trenutnoElemenata; i++) {
  291.            
  292.             returnani.AddElement(obj._elementi1[i], obj._elementi2[i]);
  293.  
  294.         }
  295.  
  296.         return returnani;
  297.    
  298.     }
  299.  
  300.     void operator= (Kolekcija<T1, T2> & obj) {
  301.  
  302.         //delete[]_elementi1;
  303.         //delete[]_elementi2;
  304.  
  305.         _elementi1 = new T1[obj._trenutnoElemenata];
  306.         _elementi2 = new T2[obj._trenutnoElemenata];
  307.  
  308.         for (int i = 0; i < obj._trenutnoElemenata; i++) {
  309.  
  310.             _elementi1[i] = obj._elementi1[i];
  311.             _elementi2[i] = obj._elementi2[i];
  312.  
  313.         }
  314.  
  315.     }
  316.  
  317.     void Info() {
  318.  
  319.         for (int i = 0; i < _trenutnoElemenata; i++) {
  320.  
  321.             cout << "Element1 " << i << " je ";
  322.             cout << _elementi1[i];
  323.  
  324.             cout << endl;
  325.  
  326.         }
  327.  
  328.         for (int i = 0; i < _trenutnoElemenata; i++) {
  329.  
  330.             cout << "Element2 " << i << " je ";
  331.             cout << _elementi2[i];
  332.  
  333.             cout << endl;
  334.  
  335.         }
  336.  
  337.     }
  338.  
  339.     friend ostream & operator << (ostream & COUT, Kolekcija & obj);
  340.  
  341.     //void operator= (Kolekcija<T1, T2> obj)
  342.  
  343.     /*1. AddElement :: omogucava dodavanje novog elementa u kolekciju. Osigurati automatsko prosiranje kolekcije prilikom dodavanja svakog novog elementa, te onemoguciti ponavljanje elemenata.
  344.     2. RemoveElement :: na osnovu parametra tipa T1 uklanja elemente iz kolekcije i smanjuje velicinu niza. Ukoliko je potrebno, prilikom uklanjanja elementa izvrsiti dealokaciju. Prilikom uklanjanja elemenata ocuvati redoslijed njihovog dodavanja.
  345.     3. operator+ :: vraca objekat tipa Kolekcija koji u sebi sadrzi sve elemente objekta koji je
  346.     pozvao funkciju i objekta koji je proslijedjen kao parametar (takodjer tipa Kolekcija), pri cemu se elementi unutar kreirane kolekcije ne smiju ponavljati (ne smiju postojati dva ista elementa).*/
  347. };
  348.  
  349. template <class T1, class T2>
  350. ostream & operator << (ostream & COUT, const Kolekcija<T1, T2> & obj) {
  351.  
  352.     for (int i = 0; i < _trenutnoElemenata; i++) {
  353.  
  354.         COUT << "Element1 " << i << " je ";
  355.         COUT << _elementi1[i];
  356.  
  357.         COUT << endl;
  358.  
  359.     }
  360.  
  361.     for (int i = 0; i < _trenutnoElemenata; i++) {
  362.  
  363.         COUT << "Element2 " << i << " je ";
  364.         COUT << _elementi2[i];
  365.  
  366.         COUT << endl;
  367.  
  368.     }
  369.  
  370. }
  371.  
  372. class Student{
  373.      int _brojIndeksa;
  374.     string _ime;
  375.     string _prezime;
  376.     string _korisnickomIme;
  377.     string _lozinka;
  378.  
  379. public:
  380.  
  381.     Student(string ime = " ", string prezime = " ", string lozinka = "defaultimpossibleunbreakablecase1337letspraythisdoesnthappen") : _brojIndeksa(indexator++), _ime(ime), _prezime(prezime) {
  382.        
  383.         if (! (lozinka == "defaultimpossibleunbreakablecase1337letspraythisdoesnthappen")) {
  384.             string rule = "(?=.*[[:digit:]])(?=.*[[:alpha:]])(?=.*[@*,])(?=.{6,})";
  385.  
  386.             regex pravilo(rule);
  387.  
  388.             if (!regex_search(lozinka, pravilo)) {
  389.                 indexator--;
  390.                 throw Greska(__LINE__, __FUNCTION__, "Lozinka error.\n");
  391.             }
  392.  
  393.         }
  394.  
  395.         _korisnickomIme = ime + "." + prezime;
  396.  
  397.         _lozinka = lozinka;
  398.  
  399.     }
  400.  
  401.     Student(const Student & obj) : _brojIndeksa(obj._brojIndeksa){
  402.  
  403.         _ime = obj._ime;
  404.         _prezime = obj._prezime;
  405.         _korisnickomIme = obj._korisnickomIme;
  406.         _lozinka = obj._lozinka;
  407.  
  408.     }
  409.  
  410.     Student & operator= (const Student & obj){
  411.  
  412.         _ime = obj._ime;
  413.         _prezime = obj._prezime;
  414.         _korisnickomIme = obj._korisnickomIme;
  415.         _lozinka = obj._lozinka;
  416.  
  417.         //(int)_brojIndeksa = obj._brojIndeksa; //sta se dogodi kad ovog nema
  418.  
  419.         return *this;
  420.  
  421.     }
  422.  
  423.     bool operator==(const Student & obj) {
  424.  
  425.         if (_ime == obj._ime && _prezime == obj._prezime)
  426.             return true;
  427.         else
  428.             return false;
  429.     }
  430.  
  431.     friend ostream & operator << (ostream & COUT, const Student & obj);
  432.  
  433.     void Info() {
  434.    
  435.         cout << "Broj indeksa: " << _brojIndeksa << "\nIme i prezime: " << _ime << " " << _prezime << endl;
  436.         cout << "Korisnicko ime: " << _korisnickomIme << "\nLozinka: " << _lozinka << endl;
  437.  
  438.     }
  439.     /*1. potrebne funkcije
  440.     NAPOMENE:
  441.     2. lozinka mora postovati sljedeca pravila:
  442.     2.a: sadrzi kombinaciju slova, brojeva i nekog od specijalnih znakova
  443.     2.b: ne smije sadrzavati niti ime niti prezime
  444.     2.c: sadrzi minimalno 6 znakova
  445.     postivanje navedenih pravila se mora osigurati prije kreiranje objekta tipa Student*/
  446. };
  447.  
  448. ostream & operator << (ostream & COUT, const Student & obj) {
  449.  
  450.     COUT << "Broj indeksa: " << obj._brojIndeksa << "\nIme i prezime: " << obj._ime << " " << obj._prezime << endl;
  451.     COUT << "Korisnicko ime: " << obj._korisnickomIme << "\nLozinka: " << obj._lozinka << endl;
  452.  
  453.     return COUT;
  454.  
  455. }
  456.  
  457. class Ispit{
  458. protected:
  459.     char * _opis;//npr. PR2::Integralni::30.01.2015
  460.     /*tip string u kolekciji sluzi kao napomena vezana za ponasanje studenta na ispitu gdje ce se evidentirati utisci dezurnog nastavnika npr. kasnio, dosao bez indeksa, izbacen zbog prepisivanja*/
  461.     Kolekcija<Student, string> * _listaStudenata;
  462. public:
  463.  
  464.     Ispit() :_opis("test") {
  465.  
  466.         _listaStudenata = new Kolekcija<Student, string>();
  467.  
  468.     }
  469.    
  470.     Ispit(char * description,Student & studen, string napomena) {
  471.  
  472.         int size = strlen(description) + 1;
  473.         _opis = new char[size];
  474.  
  475.         strcpy_s(_opis, size, description);
  476.  
  477.         _listaStudenata = new Kolekcija < Student, string >(studen,napomena) ;
  478.  
  479.         //_listaStudenata->AddElement(studen, napomena);
  480.  
  481.     }
  482.  
  483.     Ispit(Ispit & org) {
  484.  
  485.         int size = strlen(org._opis) + 1;
  486.         _opis = new char[size];
  487.  
  488.         strcpy_s(_opis, size, org._opis);
  489.  
  490.         _listaStudenata = new Kolekcija < Student, string >(*org._listaStudenata);
  491.  
  492.     }
  493.  
  494.     ~Ispit() { delete[]_opis; _opis = nullptr; delete _listaStudenata; _listaStudenata = nullptr; }
  495.  
  496.     void AddStudent(Student & st, string napomena = " ") {
  497.  
  498.         if (!_listaStudenata->AddElement(st, napomena)) {
  499.             _listaStudenata->RemoveElement(st);
  500.             _listaStudenata->AddElement(st, "Pokusao ponovo pristupiti ispitu.");
  501.         }
  502.  
  503.     }
  504.  
  505.      void operator = (Ispit & obj) {
  506.        
  507.         //delete[]_opis;
  508.  
  509.         int size = strlen(obj._opis) + 1;
  510.         _opis = new char[size];
  511.  
  512.         strcpy_s(_opis, size, obj._opis);
  513.  
  514.         //delete _listaStudenata;
  515.  
  516.         _listaStudenata = new Kolekcija < Student, string >(*obj._listaStudenata);
  517.        
  518.        
  519.     }
  520.  
  521.     bool operator==(Ispit & obj) {
  522.  
  523.         if (strcmp(_opis, obj._opis) == 0) {
  524.  
  525.             /*if (strcmp(_opis, "test") == 0) {
  526.  
  527.                 Student blankiestudent;
  528.                 /*if (!_listaStudenata->AddElement(blankiestudent, "whatevs")) {
  529.                     _listaStudenata->RemoveElement()
  530.                     return 2;
  531.                 }*/
  532.  
  533.                 /*if (_listaStudenata->RemoveElement(blankiestudent) == 0)
  534.                     return 2;
  535.  
  536.  
  537.             }*/
  538.  
  539.             return 1;
  540.         }
  541.  
  542.         return 0;
  543.  
  544.     }
  545.  
  546.     void Info() {
  547.  
  548.         cout << _opis << endl;
  549.         _listaStudenata->Info();
  550.         cout << endl;
  551.  
  552.     }
  553.  
  554.     friend ostream & operator << (ostream & COUT, Ispit & obj);
  555.  
  556.     /*1. AddStudent :: dodaje podatke o studentu koji je pristupio ispitu uz odgovarajucu napomenu (napomena nije obavezna).Studentu nije dozvoljeno da dva puta pristupi istom ispitu, a u slucaju da pokusa pristupiti automatski se dodaje adekvatna napomena (npr. ponovo pokusao pristupiti). */
  557. };
  558.  
  559. ostream & operator << (ostream & COUT, Ispit & obj) {
  560.  
  561.     COUT << obj._opis;
  562.     obj._listaStudenata->Info();
  563.     return COUT;
  564. }
  565.  
  566. class Predmet{
  567.     char * _nazivPredmeta;
  568.     char * _profesor;
  569.     //1. potrebne funkcije
  570. public:
  571.  
  572.     Predmet(char * predmet="TP", char * profa="TP") {
  573.  
  574.         int size = strlen(predmet) + 1;
  575.         _nazivPredmeta = new char[size];
  576.         strcpy_s(_nazivPredmeta, size, predmet);
  577.  
  578.         int size2 = strlen(profa) + 1;
  579.         _profesor = new char[size2];
  580.         strcpy_s(_profesor, size2, profa);
  581.  
  582.     }
  583.  
  584.     Predmet(Predmet & obj) {
  585.  
  586.         int size = strlen(obj._nazivPredmeta) + 1;
  587.         _nazivPredmeta = new char[size];
  588.         strcpy_s(_nazivPredmeta, size, obj._nazivPredmeta);
  589.  
  590.         int size2 = strlen(obj._profesor) + 1;
  591.         _profesor = new char[size2];
  592.         strcpy_s(_profesor, size2, obj._profesor);
  593.  
  594.     }
  595.  
  596.    
  597.  
  598.     Predmet & operator = ( Predmet & obj) {
  599.  
  600.        
  601.         delete[]_nazivPredmeta;
  602.  
  603.         int size = strlen(obj._nazivPredmeta) + 1;
  604.         _nazivPredmeta = new char[size];
  605.         strcpy_s(_nazivPredmeta, size, obj._nazivPredmeta);
  606.  
  607.         delete[] _profesor;
  608.         int size2 = strlen(obj._profesor) + 1;
  609.         _profesor = new char[size2];
  610.         strcpy_s(_profesor, size2, obj._profesor);
  611.        
  612.         return *this;
  613.  
  614.     }
  615.  
  616.     friend bool operator == (Predmet & obj, Predmet & obj2);
  617.  
  618.     ~Predmet() {
  619.         delete[]_nazivPredmeta;
  620.     _nazivPredmeta = nullptr;
  621.     delete[]_profesor;
  622.     _profesor = nullptr;
  623.     }
  624.    
  625.     friend ostream & operator << (ostream & COUT, Predmet & obj);
  626.  
  627. };
  628.  
  629. ostream & operator << (ostream & COUT, Predmet & obj) {
  630.  
  631.     COUT << obj._nazivPredmeta;
  632.     COUT << obj._profesor;
  633.  
  634.     return COUT;
  635.  
  636. }
  637.  
  638. bool operator == (Predmet & obj, Predmet & obj2)  {
  639.  
  640.     if (strcmp(obj._nazivPredmeta, obj2._nazivPredmeta) == 0)
  641.         return true;
  642.  
  643.     return false;
  644. }
  645. class SkolskaGodina{
  646.     char * _skolskaGodina;//npr.2014/2015
  647.     Kolekcija<Predmet, Ispit> * _odrzaniIspiti;
  648.  
  649. public:
  650.  
  651.     SkolskaGodina(char * koagodina, Predmet & predmet, Ispit & ispit) {
  652.    
  653.         int size = strlen(koagodina) + 1;
  654.         _skolskaGodina = new char[size];
  655.         strcpy_s(_skolskaGodina, size, koagodina);
  656.         cout << "In here";
  657.         _odrzaniIspiti = new Kolekcija<Predmet, Ispit>(predmet,ispit);
  658.  
  659.     }
  660.  
  661.     ~SkolskaGodina() { delete[]_skolskaGodina; _skolskaGodina = nullptr; delete _odrzaniIspiti; _odrzaniIspiti = nullptr; }
  662.  
  663.     void AddIspit(Ispit & ispit, Predmet & predmet){
  664.    
  665.         _odrzaniIspiti->AddElement(predmet, ispit);
  666.  
  667.     }
  668.  
  669.     void  RemoveIspit(Predmet & predmet, Ispit & ispit) {
  670.    
  671.         //Ispit blankie;
  672.         Predmet blankie2;
  673.  
  674.         _odrzaniIspiti->AddElement(blankie2, ispit);
  675.  
  676.     }
  677.  
  678.     int GetBrojIzlazakaByPredmet() {
  679.    
  680.  
  681.  
  682.     }
  683.  
  684.     Student * operator() (string something) {
  685.    
  686.  
  687.  
  688.     }
  689.  
  690.     void Info() {
  691.  
  692.         cout << _skolskaGodina << endl;
  693.         _odrzaniIspiti->Info();
  694.  
  695.     }
  696.  
  697.  
  698.     /*1. AddIspit::dodate podatke o odrzanom ispitu na odredjenom predmetu
  699.     2. RemoveIspit::uklanja podatke o odrzanom ispitu, ali samo pod uslovom da tom ispitu nije pristupio niti jedan student
  700.     3. GetBrojIzlazakaByPredmet::vraca podatak o tome koliko je puta trazeni student izasao na ispit iz odredjenog predmeta u toku skolske godine
  701.     4. operator()::vraca sve studente koji u napomeni posjeduju sadrzaj koji je proslijedjen kao parametar (npr.listu svih studenata koji u napomeni posjeduju sadrzaj "bez indeksa")
  702.     5. operator<<::ispisuje sve dostupne podatke o odrzanim ispitima i studentima koji su im pristupili*/
  703. };
  704. void main(){
  705.  
  706.     Kolekcija <int,double> objekat;
  707.  
  708.     for (int i = 0; i < 51; i++) {
  709.  
  710.         objekat.AddElement(i, i + 0.3);
  711.  
  712.     }
  713.  
  714.     objekat.Info();
  715.  
  716.     objekat.RemoveElement(5);
  717.  
  718.     objekat.Info();
  719.  
  720.     Kolekcija <int, double> objekat2;
  721.  
  722.     for (int i = 51; i < 101; i++) {
  723.  
  724.         objekat.AddElement(i, i + 0.3);
  725.  
  726.     }
  727.  
  728.     Kolekcija <int, double> objekat3(objekat+objekat2);
  729.  
  730.     //objekat3 = objekat + objekat2;
  731.  
  732.     objekat3.Info();
  733.  
  734.     try {
  735.  
  736.         Student peep("Nihad", "Hrnjic", "abcd12a");
  737.  
  738.     }
  739.  
  740.     catch (Greska err) {
  741.  
  742.         err.Info();
  743.  
  744.     }
  745.     /*catch (...) {
  746.  
  747.         cout << "Unknown error.\n";
  748.  
  749.     }*/
  750.  
  751.     Student nihad("Nihad", "Hrnjic", "abcd12@.");
  752.     nihad.Info();
  753.  
  754.     Student david("David", "Anic", "abcd12@.");
  755.     david.Info();
  756.  
  757.     Ispit integral("integralni", nihad, "***");
  758.  
  759.     integral.Info();
  760.  
  761.     integral.AddStudent(david, "problematican");
  762.  
  763.     integral.Info();
  764.  
  765.     integral.AddStudent(david, "opet");
  766.  
  767.     integral.Info();
  768.  
  769.     Predmet programiranje("Programiranje", "Denis");
  770.  
  771.     SkolskaGodina skolgod("2014/2015", programiranje, integral);
  772.  
  773.     skolgod.Info();
  774.  
  775.     //pocetni broj indeksa odavde je 140002, jer je uvecavana static varijabla u testnim primjerima
  776.     // Odavde testiram bez castanja consta u int, provjeravamo dal svi studenti u nizu poslije uklonjenog dobiju indeks za 1 manji
  777.  
  778.     cout << "TESTIRANJE: " << endl;
  779.  
  780.     indexator.settozero();
  781.  
  782.     Kolekcija<Student, int> testnakolekcija;
  783.  
  784.     Student student1("ime1", "prezime1");
  785.     Student student2("ime2", "prezime2");
  786.     Student student3("ime3", "prezime3");
  787.     Student student4("ime4", "prezime4");
  788.     Student student5("ime5", "prezime5");
  789.  
  790.     testnakolekcija.AddElement(student1, 1);
  791.     testnakolekcija.AddElement(student2, 2);
  792.     testnakolekcija.AddElement(student3, 3);
  793.     testnakolekcija.AddElement(student4, 4);
  794.     testnakolekcija.AddElement(student5, 5);
  795.  
  796.     cout << "INDEXI PRIJE IZBACIVANJA: " << endl;
  797.  
  798.     testnakolekcija.Info();
  799.  
  800.     Student zaizbacit("Ovog", "Izbacujemo");
  801.  
  802.     testnakolekcija.RemoveElement(student3);
  803.  
  804.     cout << "INDEXI POSLIJE IZBACIVANJA: " << endl;
  805.  
  806.     testnakolekcija.Info();
  807.  
  808.     //izbjegavajte koristenje vlastitog imena i prezimena
  809.     //provjeriti validnost izvrsenja svih dostupnih funkcionalnosti na objektu tipa SkolskaGodina
  810.  
  811.     system("pause>0");
  812. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement