rijads

Workshop8_1.2

Dec 18th, 2013
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.01 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. int index = 0;
  4. //Implementirati nasljeđivanje između odgovarajućih klasa
  5. //U narednim klasama implementacije konstruktora kopije i/ili operatora= dodati po potrebi
  6. class NastavnoOsoblje
  7. {
  8.     char* _imePrezime;
  9.     char _zvanje[10];
  10. public:
  11.     //Osnovne funkcije za rad s klasom
  12.     NastavnoOsoblje(){
  13.         _imePrezime = new char(' ');
  14.         strncpy_s(_zvanje, 10, "Nepoznato", 9);
  15.     }
  16.     NastavnoOsoblje(char* a, char* b){
  17.         _imePrezime = new char(strlen(a) + 1);
  18.         strcpy_s(_imePrezime, strlen(a) + 1, a);
  19.         strncpy_s(_zvanje, strlen(b) + 1, b, strlen(b));
  20.     }
  21.     ~NastavnoOsoblje(){
  22.         delete[] _imePrezime;
  23.         _imePrezime = NULL;
  24.     }
  25.     char* get_imePrezime(){
  26.         return _imePrezime;
  27.     }
  28.     char* get_zvanje(){
  29.         return _zvanje;
  30.     }
  31.     NastavnoOsoblje(NastavnoOsoblje &d){
  32.         _imePrezime = new char[strlen(d._imePrezime) + 1];
  33.         strcpy_s(_imePrezime, strlen(d._imePrezime) + 1, d._imePrezime);
  34.         strncpy_s(_zvanje, strlen(d._zvanje) + 1, d._zvanje, strlen(d._zvanje));
  35.  
  36.     }
  37.     NastavnoOsoblje &operator=(NastavnoOsoblje &d){
  38.         if (this != &d){
  39.             _imePrezime = new char[strlen(d._imePrezime) + 1];
  40.             strcpy_s(_imePrezime, strlen(d._imePrezime) + 1, d._imePrezime);
  41.             strncpy_s(_zvanje, strlen(d._zvanje) + 1, d._zvanje, strlen(d._zvanje));
  42.         }
  43.         return *this;
  44.     }
  45.     ostream friend &operator<< (ostream & out, NastavnoOsoblje & l){
  46.         out << l._zvanje << " " << l._imePrezime;
  47.         return out;
  48.     }
  49. };
  50.  
  51. class Student {
  52. protected:
  53.     const int _indeks;
  54.     char* _imePrezime;
  55. public:
  56.     // Osnovne funkcije za rad s klasom
  57.     Student() :_indeks(++index) {
  58.         _imePrezime = new char(' ');
  59.     }
  60.     Student(char* a) :_indeks(++index) {
  61.         _imePrezime = new char[strlen(a) + 1];
  62.         strcpy_s(_imePrezime, strlen(a) + 1, a);
  63.     }
  64.     ~Student(){
  65.         delete[]_imePrezime;
  66.         _imePrezime = NULL;
  67.     }
  68. };
  69.  
  70. class DiplomiraniStudent : public Student {
  71.     char* _temaRada;
  72.     int _godinaDiplomiranja;
  73.     int _ocjenaDiplomiranja;
  74.     NastavnoOsoblje* _komisija[3];
  75. public:
  76.     //Osnovne funkcije za rad s klasom
  77.     DiplomiraniStudent() :Student(){
  78.         _temaRada = new char(' ');
  79.         _godinaDiplomiranja = 0;
  80.         _ocjenaDiplomiranja = 0;
  81.         for (int i = 0; i < 3; i++){
  82.             _komisija[i] = NULL;
  83.         }
  84.     }
  85.     DiplomiraniStudent(char*a, char*t, int gd, int od):Student(a){
  86.         _temaRada = new char(strlen(t) + 1);
  87.         strcpy_s(_temaRada, strlen(t) + 1, t);
  88.         _godinaDiplomiranja = gd;
  89.         _ocjenaDiplomiranja = od;
  90.         for (int i = 0; i < 3; i++){
  91.             _komisija[i] = NULL;
  92.         }
  93.     }
  94.     ~DiplomiraniStudent(){
  95.         delete[]_temaRada;
  96.         _temaRada = NULL;
  97.     }
  98.     //Omogućiti dodavanje određenog člana komisije, kao i zamjenu već dodanog člana. Funkcija treba
  99.     //da primi parametar o rednom broju zamjenskog člana.
  100.     void dodajclan(NastavnoOsoblje &k, int n){
  101.         _komisija[n] = new NastavnoOsoblje(k);
  102.     }
  103.     void ispis(){
  104.         cout << "\n=============================\nIme i Prezime: " << _imePrezime << "\nIndeks: " << _indeks << "\nTema rada: " << _temaRada << "\nGodina diplomiranja: " << _godinaDiplomiranja << "\n\t\tOcjena:" << _ocjenaDiplomiranja << endl;
  105.         cout << "Komisija:\n1.Clan: " << *_komisija[0] << "\n2.Clan: " << _komisija[1] << "\n3.Clan: " << _komisija[2] << "\n=============================\n";
  106.     }
  107.  
  108. };
  109.  
  110. void main()
  111. {
  112.     //Kreirati u dinamičkoj memoriji niz diplomiranih studenata i testirati dostupne funkcionalnosti
  113.  
  114.     DiplomiraniStudent *niz;
  115.     NastavnoOsoblje*n;
  116.     n = new NastavnoOsoblje("Mike Smith", "doc.dr");
  117.     for (int i = 0; i < 1; i++){
  118.         char imeprezime[40];
  119.         int index;
  120.         char temarada[40];
  121.         int godinaDiplomiranja;
  122.         int ocjenaDiplomiranja;
  123.         cout << "Ime i Prezime Diplomiranog studenta: ";
  124.         cin.getline(imeprezime, 39);
  125.         cout << "\nTema rada: ";
  126.         cin.getline(temarada, 39);
  127.         cout << "\nGodina diplomiranja: ";
  128.         cin >> godinaDiplomiranja;
  129.         cin.ignore();
  130.         cout << "\nOcjena diplomiranja: ";
  131.         cin >> ocjenaDiplomiranja;
  132.         cin.ignore();
  133.         niz= new DiplomiraniStudent(imeprezime, temarada, godinaDiplomiranja, ocjenaDiplomiranja);
  134.         niz->dodajclan(*n, 0);
  135.     }
  136.     for (int i = 0; i < 1; i++)
  137.         niz->ispis();
  138.     system("pause>0");
  139. }
Advertisement
Add Comment
Please, Sign In to add comment