Programming Exam
Programming Exam
1. ZADATAK
Izvršiti definiciju funkcija na način koji odgovara opisu (komentarima) datom neposredno uz pozive ili
nazive funkcija. Možete dati komentar na bilo koju liniju code-a koju smatrate da bi trebalo unaprijediti
ili da će eventualno uzrokovati grešku prilikom kompajliranja. Također, možete dodati dodatne funkcije
koje će vam olakšati implementaciju programa.
#include<iostream>
using namespace std;
/*
1. BROJ I VRSTA PARAMETARA MORAJU BITI IDENTICNI KAO U PRIMJERIMA. U SUPROTNOM SE
RAD NEĆE BODOVATI
2. STAVITE KOMENTAR NA DIJELOVE CODE-A KOJE NE BUDETE IMPLEMENTIRALI
3. KREIRAJTE .DOC FAJL SA VAŠIM BROJEM INDEKSA ( NPR. IB160061.DOC BEZ IMENA I
PREZIMENA), TE NA KRAJU ISPITA U NJEGA KOPIRAJTE RJEŠENJA VAŠIH ZADATAKA. NE
PREDAVATI .TXT ILI .CPP FAJLOVE
4. TOKOM IZRADE ISPITA NIJE DOZVOLJENO KORIŠTENJE HELP-A
5. TOKOM IZRADE ISPITA MOGU BITI POKRENUTA SAMO TRI PROGRAMA: PDF READER (ISPITNI
ZADACI), MS VISUAL STUDIO, MS WORD (U KOJI ĆETE KOPIRATI VAŠA RJEŠENJA)
6. BEZ OBZIRA NA TO DA LI SU ISPITNI ZADACI URAĐENI, SVI STUDENTI KOJI SU
PRISTUPILI ISPITU MORAJU PREDATI SVOJ RAD
*/
//narednu liniju code-a ignorisite, osim u slucaju da vam bude predstavljala
smetnje u radu
#pragma warning(disable:4996)
1
Fakultet informacijskih tehnologija
struct KaratePojas {
Datum * _datumPolaganja;//datum koji ce se evidentirati kao datum polaganja
pojasa tj. kada su ispunjene sve aktivnosti/obaveze
Pojas _pojas;
Aktivnost * _listaIzvrsenihAktivnosti;
int _trenutnoIzvrsenihAktivnosti;
void Unos(Pojas pojas) {
_listaIzvrsenihAktivnosti = nullptr;
_trenutnoIzvrsenihAktivnosti = 0;
_datumPolaganja = nullptr;
_pojas = pojas;
}
void Dealociraj() {
_datumPolaganja->Dealociraj(); _datumPolaganja = nullptr;
for (size_t i = 0; i < _trenutnoIzvrsenihAktivnosti; i++)
_listaIzvrsenihAktivnosti[i].Dealociraj();
delete[] _listaIzvrsenihAktivnosti;
_listaIzvrsenihAktivnosti = nullptr;
}
void Ispis() {
_datumPolaganja->Ispis();
cout << _pojas <<endl;
for (size_t i = 0; i < _trenutnoIzvrsenihAktivnosti; i++)
_listaIzvrsenihAktivnosti[i].Ispis();
}
};
struct Kandidat {
char * _imePrezime;
shared_ptr<KaratePojas> _pojasevi[6];
void Unos(const char * imePrezime) {
int size = strlen(imePrezime) + 1;
_imePrezime = new char[size];
strcpy_s(_imePrezime, size, imePrezime);
for (size_t i = 0; i < 6; i++)
_pojasevi[i] = nullptr;
}
void Dealociraj() {
delete[] _imePrezime; _imePrezime = nullptr;
for (size_t i = 0; i < 6; i++)
if (_pojasevi[i] != nullptr) {
_pojasevi[i]->Dealociraj();
_pojasevi[i].reset();
}
}
void Ispis() {
cout << _imePrezime << endl;
for (size_t i = 0; i < 6; i++)
if (_pojasevi[i] != nullptr)
_pojasevi[i]->Ispis();
}
};
void main() {
//BROJ I VRSTA PARAMETARA MORAJU BITI IDENTICNI KAO U PRIMJERIMA
//STAVITE KOMENTAR NA DIJELOVE CODE-A KOJE NE BUDETE IMPLEMENTIRALI
Datum datumPolaganja1, datumPolaganja2, datumPolaganja3, datumPolaganja4;
datumPolaganja1.Unos(10, 6, 2018);
datumPolaganja2.Unos(18, 6, 2018);
datumPolaganja3.Unos(22, 3, 2018);
datumPolaganja4.Unos(22, 7, 2018);
2
Fakultet informacijskih tehnologija
Kandidat jasmin;
jasmin.Unos("Jasmin Azemovic");
/*
Karate pojasevi se moraju dodavati po redoslijedu tj. ne smije se dozvoliti
dodavanje zelenog pojasa ukoliko prethodno nije dodan zuti i narandzasti. Za
provjeru lokacije (unutar funkcije DodajPojas) na koju ce se dodati novi karate
pojas, te da li su nizi pojasevi prethodno dodani koristiti lambda funkciju.
*/
if (jasmin.DodajPojas(pojasZuti))
3
Fakultet informacijskih tehnologija
float prosjek = 0;
Pojas pojas;
//Funkcija GetNajbolji vraca par koji sadrzi oznaku i prosjecnu ocjenu
(uspjesno okoncanih aktivnosti) pojasa sa najvecim prosjekom
tie(pojas, prosjek) = jasmin.GetNajbolji();
cout << "Najbolji rezultat od " << prosjek << " je ostvaren tokom stjecanja
pojasa " << pojas << endl;
datumPolaganja1.Dealociraj(), datumPolaganja2.Dealociraj(),
datumPolaganja3.Dealociraj(), datumPolaganja4.Dealociraj();
aktivnost1.Dealociraj(), aktivnost2.Dealociraj(), aktivnost3.Dealociraj(),
aktivnost4.Dealociraj(), aktivnost5.Dealociraj();
pojasZuti.Dealociraj(), pojasNarandzasti.Dealociraj(),
pojasZeleni.Dealociraj();
jasmin.Dealociraj();
system("pause");
}