Advertisement
Guest User

Untitled

a guest
Aug 28th, 2016
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.49 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. enum VrstaObaveze { Seminarski, Parcijalni1, Parcijalni2, Integralni };
  4. char *vrsta[] = { "Seminarski", "Parcijalni1", "Parcijalni2", "Integralni" };
  5. struct Datum {
  6. int * _dan, *_mjesec, *_godina;
  7. void Unos(int d, int m, int g) {
  8. _dan = new int;
  9. *_dan = d;
  10. _mjesec = new int;
  11. *_mjesec = m;
  12. _godina = new int;
  13. *_godina = g;
  14. }
  15. void Ispis() { cout << *_dan << "/" << *_mjesec << "/" << *_godina << endl; }
  16. void Dealociraj() { delete _dan; delete _mjesec; delete _godina; }
  17. bool Isti(Datum d) {
  18. if (*_dan == *d._dan && *_mjesec == *d._mjesec && *_godina == *d._godina)
  19. return true;
  20. else
  21. return false;
  22.  
  23. }
  24. };
  25. struct ObavezeNaPredmetu {
  26. VrstaObaveze _vrstaObaveze;
  27. Datum * _datumIzvrsenja;
  28. int _ocjena; // 5 - 10
  29. char * _komentar;
  30. void Unos(VrstaObaveze vrsta, Datum * datum, int ocjena) {
  31. _vrstaObaveze = vrsta;
  32. _datumIzvrsenja = new Datum;
  33. _datumIzvrsenja->Unos(*datum->_dan, *datum->_mjesec, *datum->_godina);
  34. _ocjena = ocjena;
  35. _komentar = NULL;
  36. }
  37. void Ispis() {
  38. cout << vrsta[_vrstaObaveze] << " " << _ocjena;
  39. _datumIzvrsenja->Ispis();
  40. cout << endl;
  41. }
  42. void Dealociraj() { delete _datumIzvrsenja; delete[] _komentar; }
  43. };
  44. struct PolozeniPredmet {
  45. Datum * _datumPolaganja;
  46. //u okviru jednog predmeta studenti mogu imati najviše 10 obaveza
  47. ObavezeNaPredmetu _listaIzvrsenihObaveza[10];
  48. int _trenutnoIzvrsenihObaveza;
  49. int * _konacnaOcjena;
  50. void Unos(Datum * d, ObavezeNaPredmetu obaveza) {
  51. //Na osnovu vrijednosti primljenih parametara izvršiti inicijalizaciju odgovarajućih //atributa
  52. _datumPolaganja = new Datum;
  53. _datumPolaganja->Unos(*d->_dan, *d->_mjesec, *d->_godina);
  54. _trenutnoIzvrsenihObaveza = 0;
  55. _listaIzvrsenihObaveza[_trenutnoIzvrsenihObaveza].Unos(obaveza._vrstaObaveze, obaveza._datumIzvrsenja, obaveza._ocjena);
  56. _trenutnoIzvrsenihObaveza++;
  57. _konacnaOcjena = nullptr;
  58.  
  59.  
  60.  
  61.  
  62. }
  63. void Ispis() {
  64. _datumPolaganja->Ispis();
  65. for (size_t i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  66. {
  67. _listaIzvrsenihObaveza[i].Ispis();
  68.  
  69. }
  70.  
  71. }
  72. //bool DodajKomentarIzvrsenojObavezi(ObavezeNaPredmetu * obaveza, char * komentar) {
  73. // /*Funkcija ima zadatak da na osnovu primljenog parametra obaveza pronađe izvršenu obavezu, te joj doda komentar koji je također proslijeđen kao parametar.
  74. // Voditi računa o tome da jedna obaveza može imati veći broj komentara. U slučaju da tražena obaveza ne postoji, funkcija vraća false. */
  75. // if (_trenutnoIzvrsenihObaveza < 10) {
  76. // for (size_t i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  77. // {
  78. // if (_listaIzvrsenihObaveza[i]._datumIzvrsenja->Isti(*obaveza->_datumIzvrsenja) && int(_listaIzvrsenihObaveza[i]._vrstaObaveze) == int(obaveza->_vrstaObaveze) && _listaIzvrsenihObaveza[i]._ocjena == obaveza->_ocjena); {
  79. // if (komentar == nullptr) {
  80. // strcpy(_listaIzvrsenihObaveza[i]._komentar, obaveza->_komentar);
  81. // return true;
  82. // }
  83. // else {
  84. // strcat(_listaIzvrsenihObaveza[i]._komentar, obaveza->_komentar);
  85. // return true;
  86. // }
  87.  
  88.  
  89. // }
  90.  
  91. // }
  92. // }
  93. //
  94. // return false;
  95. //}
  96. int FormirajKonacnuOcjenu() {
  97. /*Funkcija je zadužena za formiranje konačne ocjene na položenom predmetu. Za formiranje konačne ocjene predmet treba imati najmanje tri izvršene
  98. obaveze od kojih jedna mora biti seminarski rad ukoliko je student integralno položio ispit. U slučaju da komentar na obavezi sadrži riječ varanje,
  99. ocjena na toj obavezi se umanjuje za 1. Ukoliko svi pomenuti uslovi nisu izvršeni, konačna ocjena treba biti postavljena na vrijednost 5.
  100. Funkcija vraća vrijednost atributa _konacnaOcjena*/
  101. float suma = 0;
  102. int s = 0;
  103. if (_trenutnoIzvrsenihObaveza >= 3) {
  104. for (size_t i = 0; i < _trenutnoIzvrsenihObaveza; i++)
  105. {
  106. if (_listaIzvrsenihObaveza[i]._vrstaObaveze == Integralni && _listaIzvrsenihObaveza[i]._ocjena>5) {
  107. suma += _listaIzvrsenihObaveza[i]._ocjena;
  108. if (_listaIzvrsenihObaveza[i]._vrstaObaveze == Seminarski) {
  109. s++;
  110. suma += _listaIzvrsenihObaveza[i]._ocjena;
  111. *_konacnaOcjena = suma / (s + 1);
  112. if (strstr(_listaIzvrsenihObaveza[i]._komentar, "varanje") != nullptr)
  113. (*_konacnaOcjena) -= 1;
  114. }
  115. }
  116.  
  117. }
  118.  
  119. }
  120.  
  121. }
  122. };
  123. //int Pretraga(PolozeniPredmet * p, int max) {
  124. // /*Funkcija ima zadatak da ispiše informacije o svim položenim predmetima kod kojih je student ispit položio putem parcijalnih ispita, te tom prilikom ostvario prosječnu ocjenu veću od 8,5. Da bi informacije o položenom predmetu bile ispisane moraju biti ispunjeni svi uslovi neophodni za formiranje konačne ocjene. Nakon ispisa, funkcija vraća broj položenih predmeta koji su zadovoljili navedene kriterije.*/
  125. //}
  126. void main() {
  127. Datum d1, d2, d3;
  128. d1.Unos(25, 5, 2015);
  129. d2.Unos(5, 6, 2013);
  130. d3.Unos(2, 6, 2012);
  131.  
  132. ObavezeNaPredmetu o1, o2, o3;
  133. o1.Unos(Parcijalni1, &d1, 8);
  134. o2.Unos(Parcijalni2, &d2, 7);
  135. o3.Unos(Seminarski, &d3, 6);
  136.  
  137. PolozeniPredmet p1, p2, p3;
  138. p1.Unos(&d1, o1);
  139. p2.Unos(&d2, o2);
  140. p3.Unos(&d3, o3);
  141. p1.Ispis();
  142. p2.Ispis();
  143. p3.Ispis();
  144.  
  145. /*if (p1.DodajKomentarIzvrsenojObavezi(&o1, "omg wtf"))
  146. cout << "Komentar dodan" << endl;
  147. else
  148. cout << "Nije dodan!" << endl;
  149. if (p1.DodajKomentarIzvrsenojObavezi(&o1, "gehehe"))
  150. cout << "Komentar dodan" << endl;
  151. else
  152. cout << "Nije dodan!" << endl;*/
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160. //izbjegavajte korištenje vlastitog imena i prezimena.
  161. //provjeriti validnost izvršenja svih dostupnih funkcionalnosti
  162. system("pause>0");
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement