rijads

workshop 8_1

Dec 17th, 2013
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.09 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, int b) :_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){
  86.         _imePrezime = new char[strlen(a) + 1];
  87.         strcpy_s(_imePrezime, strlen(a) + 1, a);
  88.         _temaRada = new char(strlen(t) + 1);
  89.         strcpy_s(_temaRada, strlen(t) + 1, t);
  90.         _godinaDiplomiranja = gd;
  91.         _ocjenaDiplomiranja = od;
  92.         for (int i = 0; i < 3; i++){
  93.             _komisija[i] = NULL;
  94.         }
  95.     }
  96.     ~DiplomiraniStudent(){
  97.         delete[]_temaRada;
  98.         _temaRada = NULL;
  99.     }
  100.     //Omogućiti dodavanje određenog člana komisije, kao i zamjenu već dodanog člana. Funkcija treba
  101.     //da primi parametar o rednom broju zamjenskog člana.
  102.     void dodajclan(NastavnoOsoblje &k, int n){
  103.         _komisija[n] = new NastavnoOsoblje(k);
  104.     }
  105.     void ispis(){
  106.         cout << "\n=============================\nIme i Prezime: " << _imePrezime << "\nIndeks: " << _indeks << "\nTema rada: " << _temaRada << "\nGodina diplomiranja: " << _godinaDiplomiranja << "\n\t\tOcjena:" << _ocjenaDiplomiranja<<endl;
  107.         cout << "Komisija:\n1.Clan: " << *_komisija[0] << "\n2.Clan: " << _komisija[1] << "\n3.Clan: " << _komisija[2]<<"\n=============================\n";
  108.     }
  109.  
  110. };
  111.  
  112. void main()
  113. {
  114.     //Kreirati u dinamičkoj memoriji niz diplomiranih studenata i testirati dostupne funkcionalnosti
  115.  
  116.     DiplomiraniStudent *niz[1];
  117.     NastavnoOsoblje*n[1];
  118.     n[0] = new NastavnoOsoblje("Mike Smith", "doc.dr");
  119.     for (int i = 0; i < 1; i++){
  120.         char imeprezime[40];
  121.         int index;
  122.         char temarada[40];
  123.         int godinaDiplomiranja;
  124.         int ocjenaDiplomiranja;
  125.         cout << "Ime i Prezime Diplomiranog studenta: ";
  126.         cin.ignore();
  127.         cin.getline(imeprezime, 39);
  128.         cout << "\nTema rada: ";
  129.         cin.ignore();
  130.         cin.getline(temarada, 39);
  131.         cout << "\nGodina diplomiranja: ";
  132.         cin >> godinaDiplomiranja;
  133.         cout << "\nOcjena diplomiranja: ";
  134.         cin >> ocjenaDiplomiranja;
  135.         niz[i]=new DiplomiraniStudent(imeprezime, temarada, godinaDiplomiranja, ocjenaDiplomiranja);
  136.         niz[i]->dodajclan(*n[0], 0);
  137.     }
  138.     for (int i = 0; i < 1; i++)
  139.         niz[i]->ispis();
  140.  
  141. }
Advertisement
Add Comment
Please, Sign In to add comment