Advertisement
sellmmaahh

tut13-zad2

Aug 5th, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.60 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <stdexcept>
  4. #include <cstring>
  5. #include <string>
  6. #include <algorithm>
  7. #include "TestCurenja.h"
  8.  
  9.  
  10. using namespace std;
  11.  
  12. class Student {
  13.     protected:
  14.     string ime_i_prezime;
  15.     int index;
  16.     public:
  17.         Student(string ime_i_p, int ind) : ime_i_prezime(ime_i_p), index(ind) {}
  18.         string DajIme () const  {return ime_i_prezime; }
  19.         int DajIndex () const { return index; }
  20.         virtual ~Student() {}
  21.         virtual void Ispisi () const {
  22.             cout<<"Student "<<ime_i_prezime<<" ima index: "<<index;
  23.         }
  24. };
  25.  
  26. class DiplomiraniStudent : public Student {
  27.     int godina_diplomiranja;
  28. public:
  29.     DiplomiraniStudent(string ime_i_p, int ind, int god_dipl) : Student(ime_i_p, ind), godina_diplomiranja(god_dipl) {}
  30.     int DajGodinuDiplomiranja() const { return godina_diplomiranja; }
  31.     void Ispisi () const {
  32.         Student::Ispisi();
  33.         cout<<" , a diplomirao je "<<godina_diplomiranja<<". godine.";
  34.     }
  35.     };
  36.  
  37.     class StudenskaSluzba {
  38.         protected:
  39.         int broj_studenata;
  40.         const int kapacitet;
  41.         Student **studenti;
  42.     public:
  43.         static bool Kriterij1(Student *s1,Student *s2) {
  44.             return s1->DajIme()<s2->DajIme(); }
  45.  
  46.             static bool Kriterij2(Student *s1,Student *s2) {
  47.                 return s1->DajIndex()<s2->DajIndex();
  48.             }
  49.         explicit StudenskaSluzba(int kapacitet) : broj_studenata(0), kapacitet(kapacitet), studenti(new Student *[kapacitet]) {}
  50.         ~StudenskaSluzba ();
  51.         StudenskaSluzba(const StudenskaSluzba &s)=delete;
  52.         StudenskaSluzba &operator=(const StudenskaSluzba &s)=delete;
  53.         void UpisiStudenta (string ime_i_prezime, int br_ind);
  54.          void UpisiDiplomiranogStudenta (string ime_i_prezime, int br_ind, int god_dipl);
  55.          void IspisiPoAbecedi() {
  56.              sort(studenti,studenti+broj_studenata, Kriterij1);
  57.              for (int i=0; i<broj_studenata; i++) {
  58.                     studenti[i]->Ispisi();
  59.              cout<<endl;
  60.              }}
  61.              void IspisiPoIndeksu () {
  62.                  sort(studenti, studenti+broj_studenata, Kriterij2);
  63.                  for (int i=0; i<broj_studenata; i++) {
  64.                     studenti[i]->Ispisi();
  65.              cout<<endl;
  66.                  }}
  67.  
  68.  
  69.     };
  70.  
  71.     StudenskaSluzba::~StudenskaSluzba() {
  72.         for (int i=0; i<broj_studenata; i++)
  73.             delete studenti[i];
  74.         delete [] studenti;
  75.     }
  76.          void StudenskaSluzba::UpisiStudenta (string ime_i_prezime, int br_ind) {
  77.              if (broj_studenata>=kapacitet) throw "Popunjen niz!";
  78.              studenti[broj_studenata++]=new Student(ime_i_prezime, br_ind);
  79.          }
  80.            void StudenskaSluzba::UpisiDiplomiranogStudenta (string ime_i_prezime, int br_ind, int god_dipl) {
  81.                if (broj_studenata>=kapacitet) throw "Popunjen niz!";
  82.                studenti[broj_studenata++]=new DiplomiraniStudent(ime_i_prezime, br_ind, god_dipl);
  83.            }
  84.  
  85. int main () {
  86.   try {   StudenskaSluzba studenti(5);
  87.  
  88.   studenti.UpisiStudenta("Selma Hecimovic", 4543);
  89.   studenti.UpisiDiplomiranogStudenta("Emina Hasanovic", 2342, 2010);
  90.   studenti.UpisiDiplomiranogStudenta("Emina Hodzic",3452,2011);
  91.   studenti.UpisiDiplomiranogStudenta("Esma Hecimovic",6543,2009);
  92.   studenti.UpisiStudenta("Belma Homarac",5555);
  93.    cout<<"Ispis po abecednom redu:"<<endl;
  94.   studenti.IspisiPoAbecedi();
  95.   cout<<endl;
  96.   cout<<"Ispis po broju indeksa: "<<endl;
  97.   studenti.IspisiPoIndeksu();
  98.   cout<<endl;
  99.  
  100.  
  101.    }
  102.    catch (const char x[]) {
  103.    cout<<x;
  104.    }
  105.    return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement