Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- enum VrstaObaveze { Seminarski, Parcijalni1, Parcijalni2, Integralni };
- char *vrsta[] = { "Seminarski", "Parcijalni1", "Parcijalni2", "Integralni" };
- struct Datum {
- int * _dan, *_mjesec, *_godina;
- void Unos(int d, int m, int g) {
- _dan = new int;
- *_dan = d;
- _mjesec = new int;
- *_mjesec = m;
- _godina = new int;
- *_godina = g;
- }
- void Ispis() { cout << *_dan << "/" << *_mjesec << "/" << *_godina << endl; }
- void Dealociraj() { delete _dan; delete _mjesec; delete _godina; }
- bool Isti(Datum d) {
- if (*_dan == *d._dan && *_mjesec == *d._mjesec && *_godina == *d._godina)
- return true;
- else
- return false;
- }
- };
- struct ObavezeNaPredmetu {
- VrstaObaveze _vrstaObaveze;
- Datum * _datumIzvrsenja;
- int _ocjena; // 5 - 10
- char * _komentar;
- void Unos(VrstaObaveze vrsta, Datum * datum, int ocjena) {
- _vrstaObaveze = vrsta;
- _datumIzvrsenja = new Datum;
- _datumIzvrsenja->Unos(*datum->_dan, *datum->_mjesec, *datum->_godina);
- _ocjena = ocjena;
- _komentar = NULL;
- }
- void Ispis() {
- cout << vrsta[_vrstaObaveze] << " " << _ocjena;
- _datumIzvrsenja->Ispis();
- cout << endl;
- }
- void Dealociraj() { delete _datumIzvrsenja; delete[] _komentar; }
- };
- struct PolozeniPredmet {
- Datum * _datumPolaganja;
- //u okviru jednog predmeta studenti mogu imati najviše 10 obaveza
- ObavezeNaPredmetu _listaIzvrsenihObaveza[10];
- int _trenutnoIzvrsenihObaveza;
- int * _konacnaOcjena;
- void Unos(Datum * d, ObavezeNaPredmetu obaveza) {
- //Na osnovu vrijednosti primljenih parametara izvršiti inicijalizaciju odgovarajućih //atributa
- _datumPolaganja = new Datum;
- _datumPolaganja->Unos(*d->_dan, *d->_mjesec, *d->_godina);
- _trenutnoIzvrsenihObaveza = 0;
- _listaIzvrsenihObaveza[_trenutnoIzvrsenihObaveza].Unos(obaveza._vrstaObaveze, obaveza._datumIzvrsenja, obaveza._ocjena);
- _trenutnoIzvrsenihObaveza++;
- _konacnaOcjena = nullptr;
- }
- void Ispis() {
- _datumPolaganja->Ispis();
- for (size_t i = 0; i < _trenutnoIzvrsenihObaveza; i++)
- {
- _listaIzvrsenihObaveza[i].Ispis();
- }
- }
- //bool DodajKomentarIzvrsenojObavezi(ObavezeNaPredmetu * obaveza, char * komentar) {
- // /*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.
- // 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. */
- // if (_trenutnoIzvrsenihObaveza < 10) {
- // for (size_t i = 0; i < _trenutnoIzvrsenihObaveza; i++)
- // {
- // if (_listaIzvrsenihObaveza[i]._datumIzvrsenja->Isti(*obaveza->_datumIzvrsenja) && int(_listaIzvrsenihObaveza[i]._vrstaObaveze) == int(obaveza->_vrstaObaveze) && _listaIzvrsenihObaveza[i]._ocjena == obaveza->_ocjena); {
- // if (komentar == nullptr) {
- // strcpy(_listaIzvrsenihObaveza[i]._komentar, obaveza->_komentar);
- // return true;
- // }
- // else {
- // strcat(_listaIzvrsenihObaveza[i]._komentar, obaveza->_komentar);
- // return true;
- // }
- // }
- // }
- // }
- //
- // return false;
- //}
- int FormirajKonacnuOcjenu() {
- /*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
- 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,
- ocjena na toj obavezi se umanjuje za 1. Ukoliko svi pomenuti uslovi nisu izvršeni, konačna ocjena treba biti postavljena na vrijednost 5.
- Funkcija vraća vrijednost atributa _konacnaOcjena*/
- float suma = 0;
- int s = 0;
- if (_trenutnoIzvrsenihObaveza >= 3) {
- for (size_t i = 0; i < _trenutnoIzvrsenihObaveza; i++)
- {
- if (_listaIzvrsenihObaveza[i]._vrstaObaveze == Integralni && _listaIzvrsenihObaveza[i]._ocjena>5) {
- suma += _listaIzvrsenihObaveza[i]._ocjena;
- if (_listaIzvrsenihObaveza[i]._vrstaObaveze == Seminarski) {
- s++;
- suma += _listaIzvrsenihObaveza[i]._ocjena;
- *_konacnaOcjena = suma / (s + 1);
- if (strstr(_listaIzvrsenihObaveza[i]._komentar, "varanje") != nullptr)
- (*_konacnaOcjena) -= 1;
- }
- }
- }
- }
- }
- };
- //int Pretraga(PolozeniPredmet * p, int max) {
- // /*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.*/
- //}
- void main() {
- Datum d1, d2, d3;
- d1.Unos(25, 5, 2015);
- d2.Unos(5, 6, 2013);
- d3.Unos(2, 6, 2012);
- ObavezeNaPredmetu o1, o2, o3;
- o1.Unos(Parcijalni1, &d1, 8);
- o2.Unos(Parcijalni2, &d2, 7);
- o3.Unos(Seminarski, &d3, 6);
- PolozeniPredmet p1, p2, p3;
- p1.Unos(&d1, o1);
- p2.Unos(&d2, o2);
- p3.Unos(&d3, o3);
- p1.Ispis();
- p2.Ispis();
- p3.Ispis();
- /*if (p1.DodajKomentarIzvrsenojObavezi(&o1, "omg wtf"))
- cout << "Komentar dodan" << endl;
- else
- cout << "Nije dodan!" << endl;
- if (p1.DodajKomentarIzvrsenojObavezi(&o1, "gehehe"))
- cout << "Komentar dodan" << endl;
- else
- cout << "Nije dodan!" << endl;*/
- //izbjegavajte korištenje vlastitog imena i prezimena.
- //provjeriti validnost izvršenja svih dostupnih funkcionalnosti
- system("pause>0");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement