Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- int index = 0;
- //Implementirati nasljeđivanje između odgovarajućih klasa
- //U narednim klasama implementacije konstruktora kopije i/ili operatora= dodati po potrebi
- class NastavnoOsoblje
- {
- char* _imePrezime;
- char _zvanje[10];
- public:
- //Osnovne funkcije za rad s klasom
- NastavnoOsoblje(){
- _imePrezime = new char(' ');
- strncpy_s(_zvanje, 10, "Nepoznato", 9);
- }
- NastavnoOsoblje(char* a, char* b){
- _imePrezime = new char(strlen(a) + 1);
- strcpy_s(_imePrezime, strlen(a) + 1, a);
- strncpy_s(_zvanje, strlen(b) + 1, b, strlen(b));
- }
- ~NastavnoOsoblje(){
- delete[] _imePrezime;
- _imePrezime = NULL;
- }
- char* get_imePrezime(){
- return _imePrezime;
- }
- char* get_zvanje(){
- return _zvanje;
- }
- NastavnoOsoblje(NastavnoOsoblje &d){
- _imePrezime = new char[strlen(d._imePrezime) + 1];
- strcpy_s(_imePrezime, strlen(d._imePrezime) + 1, d._imePrezime);
- strncpy_s(_zvanje, strlen(d._zvanje) + 1, d._zvanje, strlen(d._zvanje));
- }
- NastavnoOsoblje &operator=(NastavnoOsoblje &d){
- if (this != &d){
- _imePrezime = new char[strlen(d._imePrezime) + 1];
- strcpy_s(_imePrezime, strlen(d._imePrezime) + 1, d._imePrezime);
- strncpy_s(_zvanje, strlen(d._zvanje) + 1, d._zvanje, strlen(d._zvanje));
- }
- return *this;
- }
- ostream friend &operator<< (ostream & out, NastavnoOsoblje & l){
- out << l._zvanje << " " << l._imePrezime;
- return out;
- }
- };
- class Student {
- protected:
- const int _indeks;
- char* _imePrezime;
- public:
- // Osnovne funkcije za rad s klasom
- Student() :_indeks(++index) {
- _imePrezime = new char(' ');
- }
- Student(char* a) :_indeks(++index) {
- _imePrezime = new char[strlen(a) + 1];
- strcpy_s(_imePrezime, strlen(a) + 1, a);
- }
- ~Student(){
- delete[]_imePrezime;
- _imePrezime = NULL;
- }
- };
- class DiplomiraniStudent : public Student {
- char* _temaRada;
- int _godinaDiplomiranja;
- int _ocjenaDiplomiranja;
- NastavnoOsoblje* _komisija[3];
- public:
- //Osnovne funkcije za rad s klasom
- DiplomiraniStudent() :Student(){
- _temaRada = new char(' ');
- _godinaDiplomiranja = 0;
- _ocjenaDiplomiranja = 0;
- for (int i = 0; i < 3; i++){
- _komisija[i] = NULL;
- }
- }
- DiplomiraniStudent(char*a, char*t, int gd, int od):Student(a){
- _temaRada = new char(strlen(t) + 1);
- strcpy_s(_temaRada, strlen(t) + 1, t);
- _godinaDiplomiranja = gd;
- _ocjenaDiplomiranja = od;
- for (int i = 0; i < 3; i++){
- _komisija[i] = NULL;
- }
- }
- ~DiplomiraniStudent(){
- delete[]_temaRada;
- _temaRada = NULL;
- }
- //Omogućiti dodavanje određenog člana komisije, kao i zamjenu već dodanog člana. Funkcija treba
- //da primi parametar o rednom broju zamjenskog člana.
- void dodajclan(NastavnoOsoblje &k, int n){
- _komisija[n] = new NastavnoOsoblje(k);
- }
- void ispis(){
- cout << "\n=============================\nIme i Prezime: " << _imePrezime << "\nIndeks: " << _indeks << "\nTema rada: " << _temaRada << "\nGodina diplomiranja: " << _godinaDiplomiranja << "\n\t\tOcjena:" << _ocjenaDiplomiranja << endl;
- cout << "Komisija:\n1.Clan: " << *_komisija[0] << "\n2.Clan: " << _komisija[1] << "\n3.Clan: " << _komisija[2] << "\n=============================\n";
- }
- };
- void main()
- {
- //Kreirati u dinamičkoj memoriji niz diplomiranih studenata i testirati dostupne funkcionalnosti
- DiplomiraniStudent *niz;
- NastavnoOsoblje*n;
- n = new NastavnoOsoblje("Mike Smith", "doc.dr");
- for (int i = 0; i < 1; i++){
- char imeprezime[40];
- int index;
- char temarada[40];
- int godinaDiplomiranja;
- int ocjenaDiplomiranja;
- cout << "Ime i Prezime Diplomiranog studenta: ";
- cin.getline(imeprezime, 39);
- cout << "\nTema rada: ";
- cin.getline(temarada, 39);
- cout << "\nGodina diplomiranja: ";
- cin >> godinaDiplomiranja;
- cin.ignore();
- cout << "\nOcjena diplomiranja: ";
- cin >> ocjenaDiplomiranja;
- cin.ignore();
- niz= new DiplomiraniStudent(imeprezime, temarada, godinaDiplomiranja, ocjenaDiplomiranja);
- niz->dodajclan(*n, 0);
- }
- for (int i = 0; i < 1; i++)
- niz->ispis();
- system("pause>0");
- }
Advertisement
Add Comment
Please, Sign In to add comment