Ahmet_Durmic

Studenti[odigraj poslije]

Jul 28th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3. #include<algorithm>
  4.  
  5. using namespace std;
  6.  
  7. class I_Student {
  8. public:
  9. I_Student(const char *name="empty",int gu=0,int tg=2019,double avg=0):
  10. ime_prezime{nullptr},godina_upisa{gu},trenutna_godina{tg},prosjek{avg}{
  11. int size = strlen(name) + 1;
  12. ime_prezime = new char[size];
  13. strcpy_s(ime_prezime, size, name);
  14. }
  15. virtual ~I_Student() {
  16. delete[] ime_prezime; ime_prezime = nullptr;
  17. }
  18.  
  19. virtual void set() = 0;
  20. virtual void print()const = 0;
  21.  
  22. I_Student&operator=(const I_Student &that);
  23. protected:
  24. char *ime_prezime;
  25. int godina_upisa;
  26. int trenutna_godina;
  27. mutable double prosjek;
  28. };
  29. I_Student&I_Student::operator=(const I_Student &that) {
  30. if (this == &that) {
  31. return *this;
  32. }
  33. int size = strlen(that.ime_prezime) + 1;
  34. ime_prezime = new char[size];
  35. strcpy_s(ime_prezime, size, that.ime_prezime);
  36. godina_upisa = that.godina_upisa;
  37. trenutna_godina = that.trenutna_godina;
  38. prosjek = that.prosjek;
  39. return *this;
  40. }
  41. class Ispiti{
  42. public:
  43. Ispiti(int am=5,string exname="empty",int mark=0):
  44. amount{ am }, ime_ispita{ nullptr }, ocjena{ nullptr }{
  45. ime_ispita = new string[amount];
  46. for (int i = 0; i < amount; i++) {
  47. ime_ispita[i] = exname;
  48. }
  49. ocjena = new int[amount];
  50. for (int i = 0; i < amount; i++) {
  51. ocjena[i] = mark;
  52. }
  53. }
  54. Ispiti(const Ispiti &src):
  55. amount{ src.amount }, ime_ispita{ nullptr }, ocjena{ nullptr }{
  56. ime_ispita = new string[src.amount];
  57. copy(src.ime_ispita, src.ime_ispita + src.amount, ime_ispita);
  58. for (int i = 0; i < src.get_amount(); i++) {
  59. ocjena[i] = src.ocjena[i];
  60. }
  61. }
  62. ~Ispiti() {
  63. delete[] ime_ispita; ime_ispita = nullptr;
  64. delete[] ocjena; ocjena = nullptr;
  65. }
  66.  
  67. void set_amount() {
  68. cout << "Unesite broj polaganih ispita: "; cin >> amount; cin.clear(); cin.ignore(10000, '\n');
  69. ime_ispita = new string[amount];
  70. }
  71. void set_ispit_info(const int &i) {
  72. cout << "Unesite ime " << i + 1 << ". ispita: "; getline(cin, ime_ispita[i]);
  73. cout << "Unesite ostvarenu ocjenu: "; cin >> ocjena[i]; cin.clear(); cin.ignore(10000, '\n');
  74. }
  75.  
  76.  
  77. int get_amount()const { return amount; }
  78. string get_ime_ispita(const int &i)const { return ime_ispita[i]; }
  79. int get_ocjena(const int &i)const { return ocjena[i]; }
  80.  
  81. Ispiti &operator=(const Ispiti &that);
  82. private:
  83. int amount;
  84. string *ime_ispita;
  85. int *ocjena;
  86. };
  87. Ispiti&Ispiti::operator=(const Ispiti &that) {
  88. if (this == &that) {
  89. return *this;
  90. }
  91. amount = that.amount;
  92. ime_ispita = new string[amount];
  93. copy(that.ime_ispita, that.ime_ispita + that.amount, ime_ispita);
  94. ocjena = new int[amount];
  95. for (int i = 0; i < amount; i++) {
  96. ocjena[i] = that.ocjena[i];
  97. }
  98. return *this;
  99. }
  100.  
  101. class Student : public I_Student {
  102. public:
  103. Student(const char *name = "empty", int gu = 0, int tg = 2019, double avg = 0, int am = 5, string exname = "empty", int mark = 0):
  104. I_Student{ name,gu,tg,avg }, ispiti{ am,exname,mark }{}
  105. ~Student() {}
  106.  
  107. void set()override {
  108. cout << "Unesite svoje ime i prezime: "; cin.getline(ime_prezime, 50);
  109. cout << "Unesite smijer koji pohadate: "; getline(cin, smijer);
  110. cout << "Unesite godinu upisa: "; cin >> godina_upisa;
  111. cin.clear(); cin.ignore(10000, '\n');
  112. ispiti.set_amount();
  113. for (int i = 0; i < ispiti.get_amount(); i++) {
  114. ispiti.set_ispit_info(i);
  115. prosjek += ispiti.get_ocjena(i);
  116. }
  117. prosjek = prosjek / ispiti.get_amount();
  118. }
  119.  
  120. string get_smijer()const { return smijer; }
  121.  
  122. void print()const override {
  123. cout << ime_prezime << " , " << godina_upisa << endl;
  124. cout << "SMIJER: " << get_smijer() << endl;
  125. cout << "PODACI O POLAGANIM ISPITIMA\n";
  126. for (int i = 0; i < ispiti.get_amount(); i++) {
  127. cout<<i+1<<". "<<ispiti.get_ime_ispita(i) << " , " << ispiti.get_ocjena(i) << endl;
  128. }
  129. cout << "OSTVATENI PROSJEK: " << prosjek << endl;
  130. }
  131. private:
  132. string smijer;
  133. Ispiti ispiti;
  134. };
  135. int main() {
  136.  
  137.  
  138. Student s;
  139. s.set();
  140. Student s2;
  141. s2 = s;
  142. s2.print();
  143.  
  144.  
  145. system("pause");
  146. return 0;
  147. }
Add Comment
Please, Sign In to add comment